角谷猜想(Collatz conjecture)驗證算法C#實現

角谷猜想

任何一個大於一的自然數,如果是奇數,則乘以三再加一;如果是偶數,則除以二;得出的結果繼續按照前面的規則進行運算,最後必定得到一。 該猜想由日本數學家角谷靜夫發現,又被稱爲考拉茲猜想,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;
            }
        }
    }
}

後記

通過這個簡單的例子,我發現經常自己動手寫一些這樣的小算法、小程序,對提高自己的邏輯思維及嚴謹性還是有幫助的。以後要找一些更復雜的例子多練習,加油!

發佈了27 篇原創文章 · 獲贊 10 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章