Collat​​z动态算法

时间:2012-12-09 00:53:06

标签: c++ c algorithm

我正在尝试使用动态Collat​​z算法,但似乎有不正确的答案超过至少626331或更高。所有其他人似乎都是正确的。香港专业教育学院一直在努力工作几个小时,无法弄清楚我的问题是什么。任何人都可以给我一个帮助的建议。感谢

int DynamicCollatz::DynCollatzConjecture(__int64 n)

1 个答案:

答案 0 :(得分:4)

Collat​​z算法为值626331生成的最大值为:

o = 626331 m = 7222283188 c = 508

这个数字比适合32位(无符号)int的数字要大得多。 (c是达到1所采取步骤的计数。)

我使用了这个bc脚本(因为Collat​​z算法在大多数时候出现了,我已经把它藏起来了)来推断出这些信息:

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)