C++ Collatz动态算法

C++ Collatz动态算法,c++,c,algorithm,C++,C,Algorithm,我试图做一个动态Collatz算法,但似乎有超过至少626331或更大的错误答案。其他的似乎都是正确的。我已经为此工作了好几个小时,弄不明白我的问题是什么。谁能给我一个帮助的建议吗。谢谢 int DynamicCollatz::DynCollatzConjecture(__int64 n) Collatz算法为值626331生成的最大值为: o = 626331 m = 7222283188 c = 508 这个数字比32位(无符号)int的整数要大得多。(c是达到1所需步骤的计数。) 我用

我试图做一个动态Collatz算法,但似乎有超过至少626331或更大的错误答案。其他的似乎都是正确的。我已经为此工作了好几个小时,弄不明白我的问题是什么。谁能给我一个帮助的建议吗。谢谢

int DynamicCollatz::DynCollatzConjecture(__int64 n)

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)
define collatz(n){
if(n1){
如果(n%2)n=n*3+1,否则n/=2;c=c+1;
如果(n>m)m=n;
}
打印“o=”,o,“m=”,m,“c=”,c,“\n”;
}
科拉茨(626331)

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)
define collatz(n){
if(n1){
如果(n%2)n=n*3+1,否则n/=2;c=c+1;
如果(n>m)m=n;
}
打印“o=”,o,“m=”,m,“c=”,c,“\n”;
}
科拉茨(626331)

我怀疑整数溢出
int
s不是无限大小。我怀疑整数溢出
int
s不是无限大小的。感谢您的帮助。我很久以前就尝试过将数据类型更改为,但仍然存在问题。通过将数据类型更改为_int64,我终于能够纠正这个问题。谢谢谢谢你的帮助。我很久以前就尝试过将数据类型更改为,但仍然存在问题。通过将数据类型更改为_int64,我终于能够纠正这个问题。谢谢