题目描述
所谓哥德巴赫猜想是指,任一大于2的偶数都可以写成两个质数之和(严格说来,这是欧拉的等价描述版本)。
例如6=3+3,8=3+5,…,18=7+11。迄今为止,这仍然是一个著名的世界难题,被誉为数学王冠上的明珠。试编写程序,验证任一大于2的偶数都能写成两个质数之和。(可能有多种情况,请输出两数差最大的那组)
输入要求
输入一个大于2的偶数N。
输出要求
输出两个质数和的形式,小的质数在前,大的质数在后。
输入样例
16
输出样例
16=3+13
代码如下(示例):
#include <stdio.h>
int isprime(int n)
{
for(int i=2;i*i<=n;i++)
if(n%i==0)//除以偶数,判断是否是质数?
return 0;
return 1;
}
int main()
{
int n,max=-1; //记录最大值
int x=0,y=0;
scanf("%d",&n);
for(int i=2;i<=n/2;i++)
{
if(isprime(i) && isprime(n-i))//调用函数,判断质数
{
if(max<n-i-i) //挑选两数差最大的那组数,进行记录
{
max=n-i-i;
x=i;y=n-i;
}
}
}
printf("%d=%d+%d\n",n,x,y);
return 0;
}