哥德巴赫猜想
2016-06-26 22:45
447 查看
哥德巴赫猜想:任意一个大于6的偶数都可以写成两个素数的和:
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine("输入一个大于6的偶数:"); //提示输入信息 string TempNum = Console.ReadLine(); //记录输入的数字 int intNum; //判断一个字符串是否为能被2整除的大于6的偶数 while (!checkNum(TempNum,out intNum)) { Console.WriteLine("请重新输入一个大于6的偶数"); TempNum = Console.ReadLine(); } bool blFlag = ISGDBHArith(intNum); //判断是否符合哥德巴赫猜想 if (blFlag) //如果为true,说明符合,并输出信息 { Console.WriteLine("{0}能写成两个素数的和,所以其符合哥德巴赫猜想。", intNum); } else { Console.WriteLine("猜想错误。"); } Console.ReadLine(); } #region /// <summary> /// 判断一个字符串是否为能被2整除的大于6的偶数 /// </summary> /// <param name="intNum">要判断的数</param> /// <returns>如果是,返回true,否则,返回false</returns> static bool checkNum(string TempNum ,out int intNum) { int num = 0; if (int.TryParse(TempNum, out num) == true && num % 2 == 0 && num > 6) //判断是否为大于6的偶数 { intNum = num; return true; } intNum = num; return false; } #endregion #region 判断一个数是否是素数 /// <summary> /// 判断一个数是否是素数 /// </summary> /// <param name="intNum">要判断的数</param> /// <returns>如果是,返回true,否则,返回false</returns> static bool IsPrimeNumber(int intNum) { bool blFlag = true; //标识是否是素数 if (intNum == 1 || intNum == 2) //判断输入的数字是否是1或者2 blFlag = true; //为bool类型变量赋值 else { int sqr = Convert.ToInt32(Math.Sqrt(intNum)); //对要判断的数字进行开方运算 for (int i = sqr; i >= 2; i--) //从开方后的数进行循环 { if (intNum % i == 0) //对要判断的数字和指定数字进行求余运算 { blFlag = false; //如果余数为0,说明不是素数 } } } return blFlag; //返回bool型变量 } #endregion #region 判断一个数是否符合哥德巴赫猜想 /// <summary> /// 判断一个数是否符合哥德巴赫猜想 /// </summary> /// <param name="intNum">要判断的数</param> /// <returns>如果符合,返回true,否则,返回false</returns> static bool ISGDBHArith(int intNum) { bool blFlag = false; //标识是否符合哥德巴赫猜想 if (intNum % 2 == 0 && intNum > 6) //对要判断的数字进行判断 { for (int i = 1; i <= intNum / 2; i++) { bool bl1 = IsPrimeNumber(i); //判断i是否为素数 bool bl2 = IsPrimeNumber(intNum - i); //判断intNum-i是否为素数 if (bl1 & bl2) { //输出等式 Console.WriteLine("{0}={1}+{2}", intNum, i, intNum - i); blFlag = true; //符合哥德巴赫猜想 } } } return blFlag; //返回bool型变量 } #endregion } }
运行结果:
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C#递归算法之分而治之策略
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- C#算法之大牛生小牛的问题高效解决方法
- C#算法函数:获取一个字符串中的最大长度的数字
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- 经典排序算法之冒泡排序(Bubble sort)代码
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法