以下迭代序列定义在整数集合上:
n n/2 (当n是偶数时)
n 3n + 1 (当n是奇数时)
应用以上规则,并且以数字13开始,我们得到以下序列:
13
40
20
10
5
16
8
4
2
1
可以看出这个以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);
}
}