以下迭代序列定義在整數集合上:
n n/2 (當n是偶數時)
n 3n + 1 (當n是奇數時)
應用以上規則,並且以數字13開始,我們得到以下序列:
可以看出這個以13開始以1結束的序列包含10個項。雖然還沒有被證明(Collatz問題),但是人們認爲在這個規則下,以任何數字開始都會以1結束。
以哪個不超過100萬的數字開始,能給得到最長的序列?注意: 一旦序列開始之後,也就是從第二項開始,項是可以超過100萬的。
public class Test {
public static int max = 0;
public static long value = 0;
public static void getStep(long n) {
long temp = n;
int count = 0;
while(true){
if(n == 1) {
count++;
if(max < count){
max = count;
value = temp;
}
break;
}
if (n % 2 == 0) {
n /= 2;
count ++;
} else {
n = 3 * n + 1;
count ++;
}
}
}
public static void main(String[] args) {
long n = 1000000;
for (long i = n; i > 13; i--) {
getStep(i);
}
System.out.println(max);
System.out.println(value);
}
}