C/C++程序训练6—歌德巴赫猜想的证明
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
验证“每个不小于6的偶数都是两个素数之和”,输入一个不小于6的偶数n,找出两个素数,使它们的和为n。
Input
输入一个不小于6的偶数n。
Output
找出两个素数,使它们的和为n。只需要输出其中第一个素数最小的一组数据即可。
Example Input
80
Example Output
80=7+73
Hint
Author
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void judge(int n)
{
if(n<6)return;
int i,a,j;
for(i = 2;i <= n-i;i++)
{
int flag = 0;
for(j = 2;j <= sqrt(i);j++)//判断i是不是素数
{
if(i%j==0)
{
flag = 1;
break;
}
}
if(flag==1)//如果i不是素数,继续下一个循环
continue;
else
{
a = n - i;
for(j = 2;j <= sqrt(a);j++)//判断另一个是不是素数
{
if(a%j==0)
{
flag = 1;
break;
}
}
}
if(flag==1)continue;
if(flag==0)//若两者都为素数,输出
{
break;
}
}
printf("%d=%d+%d\n",n,i,a);
}
int main()
{
int n;
scanf("%d",&n);
judge(n);
return 0;
}