您的位置:首页 > 其它

验证哥德巴赫猜想

2010-03-15 20:21 211 查看
编写一个C#控制台应用程序,验证哥德巴赫猜想:任意一个大于任意一个大于6偶数都可分解成两个素数之和。
要求首先打印1~1000之间的偶数的歌德巴赫猜想验证结果,然后让用户输入一个数,判定此数是否是大于6的偶数,如果不是,让用户重新输入,直到满足条件为止。之后验证此输入的数的歌德巴赫猜想,并将结果打印出来)。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 哥德巴赫猜想
{
class Program
{
/// <summary>
/// 输出1~1000之间的偶数
/// </summary>
public static void consoleNum(int  num) {
Console.WriteLine("1~1000之大于6间的偶数有:");
for (int i = 6; i < num; i++)
{
if (isOuSu(i))
{
Console.Write(i.ToString() + ",");
}
}
Console.WriteLine("");

}
/// <summary>
/// 判断该数是否为素数
/// </summary>
/// <param name="num"></param>
/// <returns></returns>
public static bool isSu(int num) {
bool i = true;
for (int k = 2; k <= Math.Sqrt(num); k++)
{
if (num % k == 0)
{

i= false;

}

}
return i;
}
/// <summary>
/// 判断是否为偶数
/// </summary>
/// <param name="num"></param>
/// <returns></returns>
public static bool isOuSu(int num){

if (num % 2 == 0)
{

return true;
}
else
return false;
}
/// <summary>
/// 输出素数之和
/// </summary>
/// <param name="num"></param>
/// <param name="su"></param>
/// <param name="su1"></param>
public static void consoleSu(int num)
{
for (int j = 1; j < num; j++)
{
if (isSu(j) && isSu(num - j))
{
Console.WriteLine("{0}={1}+{2}", num, j, num - j);
break;

}
}
}
/// <summary>
/// 判断是否是数字
/// </summary>
/// <param name="num"></param>
/// <returns></returns>
public static bool isNum(string num) {

try
{
Convert.ToInt32(num);
return true;
}
catch {

return false;
}

}
public
static void Main(string[] args)
{
consoleNum(1000);
for (int i = 6; i < 1001; i++) {
if (i % 2 == 0) {
consoleSu(i);

}

}
Console.WriteLine("请输入一个数");
string num= Console.ReadLine();
while (true) {
if(isNum(num)){
int num1=Convert.ToInt32(num);
if (num1 > 6)
{
if (isOuSu(num1))
{
consoleSu(num1);
Console.WriteLine("恭喜你计算成功!");
break;
}
else
{
Console.WriteLine("您输入的数不是偶数,请重新输入...");
num = Console.ReadLine();
}
}
else {
Console.WriteLine("您输入的数不大于6,请重新输入...");
num = Console.ReadLine();
}

}else
{
Console.WriteLine("您输入的数非数字类型,请重新输入...");
num = Console.ReadLine();
}

}
Console.ReadLine();

}
}
}


运行结果:

....

970=3+967
972=1+971
974=3+971
976=5+971
978=1+977
980=3+977
982=5+977
984=1+983
986=3+983
988=5+983
990=7+983
992=1+991
994=3+991
996=5+991
998=1+997
1000=3+997
请输入一个数
4
您输入的数不大于6,请
5
您输入的数不大于6,请
7
您输入的数不是偶数,请
994
994=3+991
恭喜你计算成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: