Problem Description
验证“每个不小于6的偶数都是两个素数之和”,输入一个不小于6的偶数n,找出两个素数,使它们的和为n。
Input
输入一个不小于6的偶数n。
Output
找出两个素数,使它们的和为n。只需要输出其中第一个素数最小的一组数据即可。
Sample Input
80
Sample Output
80=7+73
#include<stdio.h>
#include<math.h>
int z(int n);
void f(int n);
int main()
{
int n=0;
scanf("%d",&n);
f(n);
return 0;
}
int z(int n)//判断素数
{
int m=sqrt(n),i=0;
int t=1;
for(i=2;i<=m;i++)
{
if(n%i==0)
t=0;
}
return t;
}
void f(int n)//输出两个素数
{
int i=0,a=0,t=0;
for(i=3;i<n;i++)
{
if(z(i)==1)
{
a=n-i;
if(z(a)==1)
{
printf("%d=%d+%d",n,i,a);
break;
}
}
}
}
//这个题的感想就是判断是不是素数非常烦,所以就创造结构体做就行了,不要一直在主函数里不然太乱了。
素数判断:
int z(int n)
{
int i,m=sqrt(n),t=1;
for(i=2;i<=m;i++)
{
if(n%i==0)
{
t=0;
}
}
return t;
}
435

被折叠的 条评论
为什么被折叠?



