0
我想做一個動態Collatz算法,但似乎有不正確的答案,至少超過626331或更高。所有其他人似乎是正確的。我一直在這個小時工作,不能弄清楚我的問題是什麼。任何人都可以給我一個建議來幫助。感謝Collatz動態算法
int DynamicCollatz::DynCollatzConjecture(__int64 n)
我想做一個動態Collatz算法,但似乎有不正確的答案,至少超過626331或更高。所有其他人似乎是正確的。我一直在這個小時工作,不能弄清楚我的問題是什麼。任何人都可以給我一個建議來幫助。感謝Collatz動態算法
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)
謝謝你的幫助。我曾嘗試將數據類型更改爲較長,但仍存在問題。我終於可以通過將數據類型更改爲__int64來糾正問題。謝謝!! – JonDog
我懷疑整數溢出。 'int's不是無限大小。 – zch