C#验证歌得巴赫猜想
歌得巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和,例如:
6=3+3,8=3+5,… ,18=7+11…
代码编写思路:从判断出两个素数p1、p2出发,求其和n,再判断出n是否在6~100内、是否为偶数,则满足歌得巴赫猜想数字的所有组合方式可由以下代码展示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace norm_program
{
class Program
{
static void Main(string[] args)
{
int n=0, i=0, j, k, p1, p2;//定义两个素数p1、p2,n为6~100之间能由两个素数表示的偶数;
for (p1 = 2; p1 < 101; p1++)//依据定义1不是素数,素数p1从2开始;
{
for (p2 = 2; p2 < 101; p2++)//素数p2从2开始实现遍历;
{
//由素数定义:素数p仅能被1或其本身整除,即从2开始至根号n中有任一数能将n整除的数都不为素数;
k = (int)Math.Sqrt(p2);
for (j = 2; j <= k; j++)
if (p2 % j == 0)
break;
if (j > k)//p2为素数,接着判断p1;
{
k = (int)Math.Sqrt(p1);
for (j = 2; j <= k; j++)
if (p1 % j == 0)
break;
if (j > k)//p1、p2都为素数,判断其和是否满足条件;
{
n = p1 + p2;
if (n >= 6 && n <= 100 && n % 2 == 0)
{
Console.Write("{0}={1}+{2}\t\t", n, p1, p2);
i++;
if(i % 5 == 0&&i!=0)//用以计数换行;
Console.Write("\n");
}
}
}
}
}
Console.ReadLine();
}
}
}
从4开始以后每一个数都可以由不同的两个数字经过相加所得,例如5=1+4,或5=2+3。
Sorry,不知咋地为啥会这样排列得乱七八糟的