求这种特殊序列的最大长度起始数
当n是偶数时,n的下一个数等于n/2
当n是奇数时,n的下一个数等于3*n+1
例如:13->40->20->10->5->16->4->2->1
虽然还没有得到证明,但我们认为任何一个数作为起点,都能最终得到1
求哪一个数作为起点,它能得到最长的序列(在一百万以内)
起点小于一百万,但是中间的数可以大于一百万
原题网址:https://projecteuler.net/problem=14
Java 代码如下
HashMap<Double, Integer> map = new HashMap<>();
map.put(1.0, 1);
int max = 0;
for(int i = 2 ; i < 1000000; i++) {
double j = (double)i;
int count = 0;
while(!map.containsKey(j)) {
count++;
if(j % 2 == 0) {
j /= 2;
} else {
j *= 3;
j++;
}
}
map.put((double)i, map.get(j) + count);
if(map.get((double)i) > max) {
max = map.get((double)i);
System.out.println(i);
}
}