今天讀離散數學讀到3x+1猜想,這真的是一個相當有趣的臆測,約略敘述一下什麼是3x+1猜想,
假設有一正整數x,如果是奇數,則把x變成3x+1,如果是偶數則x變成x/2,重複此步驟,一定可以把x變成1,便是這猜測的全部,既然說是猜測,就是還沒有證明可以確定這樣對於全部正整數都是對的,但根據維基百科,已經驗證正整數到 20 × 258 = 5,764,607,523,034,234,880,也仍未有找到例外的情況。
相當有趣是吧?
發現這個猜想就想說用快一年沒用的C++來寫寫看,花了一小時把它寫出來,應該不會有什麼BUG,測試了4~5個整數都沒錯(超混)。 XDD
附上程式碼:
#include<iostream>
using namespace std;
int main()
{
int k=0;
int a,n,b;
cout << "Please Enter a Integer :" <<endl;
cin >> n;
a=n;
while(n!=1&&n>1)
{
b=n%2;
if(b==0)
{
n = n/2;
}
else
{
n=3*n+1;
}
k++;
}
cout << a << " follow 3n+1 conjecture " <<endl<< "using " << k << " steps";
system("pause");
return 0;
}
附上編譯完成的exe檔:3x+1 conjecture.exe