In ProjectEuler Problem # 14, muss man die längste Collatz-Kette finden, bis zu 1 Million. Ich habe einen halbwegs vernünftigen Weg gefunden, aber es fühlt sich an, als wäre ich nur dumm, weil ich keinen Weg finden kann, diesen Code effizienter zu machen (der Code soll die Lösung nur ausdrucken, nachdem er getestet hat 1 bis 1 Million, hat aber nach 10 Minuten keine Ausgabe ausgedruckt). Werde ich dieses Problem falsch angehen, oder gibt es eine Möglichkeit, meinen bestehenden Code zu optimieren?C++ Collatz-Vermutung Optimierung
#include <iostream>
using namespace std;
int main()
{
int i;
int x;
int n;
int superN;
int superI;
superN = 0;
superI = 0;
for (i = 1; i <= 1000000; i++) {
x = i;
n = 1;
do {
if (x % 2 == 0) {
x = x/2;
}
if (x % 2 == 1 && x != 1) {
x = 3 * x + 1;
}
n++;
if (n > superN) {
superN = n;
superI = i;
}
} while (x != 1);
}
cout << "The number " << superI << " ran for " << superN << " terms.";
system("pause");
return 0;
}
Merken Startpunkte haben Sie bereits untersucht und kennen die Länge von. Wenn Sie von einem neuen Startpunkt aus verfolgen, stoppen Sie, sobald Sie die Nummer, die Sie zuvor untersucht haben, treffen. –
Sind Sie sicher, dass es richtig funktioniert? – immibis