0

我正在尝试做一个动态 Collat​​z 算法,但似乎有超过至少 626331 或更大的错误答案。所有其他人似乎都是正确的。我已经为此工作了几个小时,但无法弄清楚我的问题是什么。谁能给我一个帮助的建议。谢谢

int DynamicCollatz::DynCollatzConjecture(__int64 n)
4

1 回答 1

4

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

o = 626331 m = 7222283188 c = 508

这个数字远远大于 32-bit (unsigned) 的大小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)
于 2012-12-09T01:22:12.230 回答