我正在尝试使用动态Collatz算法,但似乎有不正确的答案超过至少626331或更高。所有其他人似乎都是正确的。香港专业教育学院一直在努力工作几个小时,无法弄清楚我的问题是什么。任何人都可以给我一个帮助的建议。感谢
int DynamicCollatz::DynCollatzConjecture(__int64 n)
答案 0 :(得分:4)
Collatz算法为值626331生成的最大值为:
o = 626331 m = 7222283188 c = 508
这个数字比适合32位(无符号)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)