我编写了一个 java 程序,它使用 collatz 序列查找数字链的长度。collatz 序列是:如果数字是偶数,则将其除以 2,如果是奇数,则乘以 3 并加一。当数字达到 1 时,序列结束。 Collatz Sequence 的附加信息。我的程序找到了从 1 到 100 万的数字的链长,但它在 113382 处停止。没有显示错误消息,程序只是停止打印数字。
*edit:我已经测试过了,结果发现当程序在113383上时,链会收敛到负值。谁能解释一下?
我已经包含了完整的代码,因为它很短。
public static void main(String[] args) {
int max =0, maxChain=0;
for(int i = 2; i <1000000; i++ )
{
int c =i;
int counter = 0;
while(c != 1)
{
if(c%2 ==0) c/=2;
else c= 3*c+1;
counter++;
}
if(counter > maxChain)
{
maxChain =counter;
max = i;
}
System.out.println(i);
}
System.out.println(max +" has a chain length of " +maxChain);
}