Я хочу применить последовательность Коллатца и применить ее ко всем числам от 1 до 10 ^ 6 и вернуть число с наибольшей цепочкой, необходимой для достижения 1. Однако у меня есть проблема, что мои циклы не заканчиваются в Eclipse, и я не могу понять, почему, я даже не могу отобразить все свои отпечатки в консоли, несмотря на то, что хочу этого на каждом шагу.
Последовательность Коллатца вычисляется по следующим правилам:
если n нечетное, следующее число равно n/2
если n четно, следующее число 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
, и эта программа вышла. - person MikeCAT   schedule 01.05.2016