動的コラッツ アルゴリズムを実行しようとしていますが、少なくとも 626331 以上の間違った答えがあるようです。他のすべては正しいようです。私はこれに何時間も取り組んできましたが、私の問題が何であるかを理解できません。誰でも私に役立つ提案をしてもらえますか。ありがとう
int DynamicCollatz::DynCollatzConjecture(__int64 n)
値626331に対してコラッツアルゴリズムによって生成される最大値は次のとおりです。
o = 626331 m = 7222283188 c = 508
その数は、32ビット(符号なし)に収まるよりもかなり大きいですint
。(これc
は、1に到達するために実行されたステップのカウントです。)
私はこのbc
スクリプトを使用して(コラッツのアルゴリズムがほとんどの年にSOで有効になるため、これを隠しておきました)、その情報を推測しました。
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)