В задаче ProjectEuler #14 нужно найти самую длинную цепочку Коллатца, до 1 миллиона. Я нашел наполовину приличный способ сделать это, однако мне кажется, что я просто глуп, потому что я не могу найти способ сделать этот код более эффективным (предполагается, что код только распечатывает решение после того, как он проверит от 1 до 1 миллиона, но ничего не распечатал через 10 минут). Я неправильно решаю эту проблему или есть способ оптимизировать мой существующий код?
#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;
}