角谷猜想
任何一個大於一的自然數,如果是奇數,則乘以三再加一;如果是偶數,則除以二;得出的結果繼續按照前面的規則進行運算,最後必定得到一。 該猜想由日本數學家角谷靜夫發現,又被稱爲考拉茲猜想,3n+1猜想、哈塞猜想、烏拉姆猜想或敘拉古猜想。
C#驗證
該驗證算法用C#控制檯程序實現,輸入爲任意大於1的正整數,輸出爲按規則每一步得到的數,到1結束。代碼如下:
namespace CollatzConjecture
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("請輸入一個大於1的正整數!");
string aStrInput = Console.ReadLine();
int aIntInput;
bool aAgain=true;
while (aAgain)
{
while (!int.TryParse(aStrInput, out aIntInput) || aIntInput <= 1)
{
Console.WriteLine("請輸入一個大於1的正整數!");
aStrInput = Console.ReadLine();
}
int aIntOutput = aIntInput;
while (aIntOutput != 1)
{
if (aIntOutput % 2 == 0)
{
aIntOutput /= 2;
}
else
{
aIntOutput = aIntOutput * 3 + 1;
}
Console.WriteLine(aIntOutput.ToString());
}
Console.WriteLine("按數字0退出系統,按數字1重試");
aStrInput = Console.ReadLine();
while(!int.TryParse(aStrInput, out aIntInput)||(aIntInput!=0&&aIntInput!=1))
{
Console.WriteLine("請輸入正確的命令!");
aStrInput = Console.ReadLine();
}
aAgain = aIntInput == 0 ? false : true;
}
}
}
}
後記
通過這個簡單的例子,我發現經常自己動手寫一些這樣的小算法、小程序,對提高自己的邏輯思維及嚴謹性還是有幫助的。以後要找一些更復雜的例子多練習,加油!