Я хочу применить последовательность Collatz и применить ее ко всем числам от 1 до 10^6 и вернуть число с наибольшей цепочкой, необходимой для достижения 1. Однако, У меня проблема с тем, что мои циклы, похоже, не заканчиваются в Eclipse, и я не могу понять, почему, я даже не могу получить все мои отпечатки, показанные на консоли, несмотря на то, что это нужно на каждом шагу.Поиск самой длинной цепочки в последовательности Collatz в Java, цикл не заканчивается
Коллатца последовательность вычисляется по следующим правилам:
, если п нечетно, то следующее число равно п/2
, если п четно, то следующий номер 3n + 1
Это то, что я до сих пор:
public static long collatz() {
long res = 0;
long n = 1;
long count = 0;
long largestCount = 0;
long t = 0;
for (long k = 1; k <= 20; k++) {
n = k;
while (n != 1) {
if ((n % 2) == 0) {
n = n/2;
count = count + 1;
}
else {
n = (3 * n) + 1;
count = count + 1;
}
if (count > largestCount) {
largestCount = count;
res = k;
}
}
}
System.out.println(res);
return res;
}
Вы ждали достаточно долго? Я изменил 'k <= 1000000' на' k <= 20', и эта программа вышла. – MikeCAT
это должно выполняться нормально. тот факт, что вы печатаете кучу вещей, вызывает задержку. –
Печать будет 264 868 848 строк + 1 (строка «результат:») в соответствии с [этим симулятором] (http://ideone.com/1XoAg4). Почему вы хотите так много строк? – MikeCAT