我正在尝试做一个动态 Collatz 算法,但似乎有超过至少 626331 或更大的错误答案。所有其他人似乎都是正确的。我已经为此工作了几个小时,但无法弄清楚我的问题是什么。谁能给我一个帮助的建议。谢谢
int DynamicCollatz::DynCollatzConjecture(__int64 n)
Collatz 算法为值 626331 生成的最大值为:
o = 626331 m = 7222283188 c = 508
这个数字远远大于 32-bit (unsigned) 的大小int
。(这c
是达到 1 的步数。)
我使用了这个bc
脚本(我已经把它藏起来了,因为 Collatz 算法大多数年都会出现)来推断该信息:
define collatz(n) {
if (n<=0) halt;
m=n;o=n;c=0;
while(n>1){
if(n%2)n=n*3+1 else n/=2; c=c+1;
if(n>m)m=n;
}
print "o = ",o," m = ",m," c = ",c,"\n";
}
collatz(626331)