角谷猜想(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;
            }
        }
    }
}

后记

通过这个简单的例子,我发现经常自己动手写一些这样的小算法、小程序,对提高自己的逻辑思维及严谨性还是有帮助的。以后要找一些更复杂的例子多练习,加油!

经验分享 程序员 微信小程序 职场和发展