角谷猜想(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; } } } }
后记
通过这个简单的例子,我发现经常自己动手写一些这样的小算法、小程序,对提高自己的逻辑思维及严谨性还是有帮助的。以后要找一些更复杂的例子多练习,加油!
下一篇:
迭代器模式(Iterator)