Zitat von
eisbar:
Hey danke für deine Hilfe das ist eine super Idee dies so zu schreiben.
Naja, es funktioniert immerhin. Allerdings ist es eben der Brute-Force-Ansatz, bei dem alle Möglichkeiten in einem gewissen Bereich getestet werden, und damit wird das Programm wohl auch lange brauchen. Außerdem wolltest du doch
alle ganzzahligen Möglichkeiten ermitteln, und der Code liefert dir nur die Möglichkeiten, wo die Zahlen a,b,c,d im Bereich von 1 bis 100 liegen.
Allerdings ist die Menge der natürlichen Zahlen nicht beschränkt, sodass man in endlicher Zeit nicht alle Möglichkeiten testen kann. Selbst wenn man "nur" alle mit einem vorzeichenlosen 32-Bit-Integer darstellbaren Zahlen überprüft, würden die Indizes der For-Schleifen von 1 bis 2^32-1 (ca. 4 Milliarden) laufen. Bei vier verschachtelten Schleifen macht das immerhin 2^32*2^32*2^32*2^32=2^128 Durchläufe (also rund 3,4*10^38 Durchläufe). Selbst wenn dein PC pro Sekunde eine Milliarde Schleifendurchläfe schaffen würde (was bei dem heutigen Stand der Technik noch etwas unwahrscheinlich ist), würde das Programm ca. 10^22 Jahre laufen, um alle diese Möglichkeiten zu testen. Und das nur für ein einziges n. Für jeden weiteren Exponenten beginnt die Sache von vorn.
Aber sicherlich kommt schon vor dem Ende des Programms ein Bereichsüberlauf, weil die Summe aus den vier Integern schon vorher den maximal darstellbaren Wert überschreitet.
Was ich damit sagen will, ist folgendes: der Code mag zwar gut funktionieren, solange man nur in einen kleinen Abschnitt der natürlichen Zahlen nach Lösungen sucht und der Exponent n nicht zu groß ist. Wenn man aber "alle" Lösungen, d.h. in dem Fall alle mit dem 32-Bit-Integer-Zahlenformat darstellbaren Lösungen, sucht muss man sich etwas besseres einfallen lassen.
MfG
Binärbaum