角谷猜想(Collatz conjecture)验证算法C#实现

来源:互联网 发布:怎么清理mac上的其他 编辑:程序博客网 时间:2024/05/15 07:38

角谷猜想

任何一个大于一的自然数,如果是奇数,则乘以三再加一;如果是偶数,则除以二;得出的结果继续按照前面的规则进行运算,最后必定得到一。 该猜想由日本数学家角谷静夫发现,又被称为考拉兹猜想,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;            }        }    }}

后记

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

0 0
原创粉丝点击