题目描述
输入N(N<=10000),验证4~N所有偶数是否符合哥德巴赫猜想。
(N为偶数)。
如果一个数,例如10,则输出第一个加数相比其他解法最小的方案。如10=3+7=5+5,则10=5+5是错误答案。
输入输出格式
输入格式:
第一行N
输出格式:
4=2+2 6=3+3 …… N=x+y
输入输出样例
输出样例#1:
4=2+2 6=3+3 8=3+5 10=3+7
思路:打印出素数表,一一比对
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> char p[10010]; void setPrime(int); int main() { int n,i,j,k,flag; setPrime(10010); scanf ("%d",&n); if (n<4) return 0; for (i=4;i<=n;i+=2) { flag=0; for (j=2;j<i;j++) { k=i-j; if (p[j] && p[k]) { printf ("%d=%d+%d\n",i,j,k); break; } } } return 0; } void setPrime(int n) { int i,sqr,k; sqr=sqrt(n); memset (p,1,sizeof(p)); p[0]=p[1]=0; for (i=2;i<=sqr;i++) { if (p[i]) { k=i; k+=k; while (k<n) { p[k]=0; k+=i; } } } }