输入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:
10
输出样例#1:
4=2+2
6=3+3
8=3+5
10=3+7
先筛一边素数,
然后暴力枚举就好
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<cmath>
5 #include<queue>
6 using namespace std;
7 const int MAXN=10001;
8 const int maxn=0x7fffff;
9 void read(int &n)
10 {
11 char c='+';int x=0;bool flag=0;
12 while(c<'0'||c>'9')
13 {c=getchar();if(c=='-')flag=1;}
14 while(c>='0'&&c<='9')
15 {x=x*10+(c-48);c=getchar();}
16 flag==1?n=-x:n=x;
17 }
18 int n;
19 int vis[MAXN];
20 int main()
21 {
22 read(n);
23 vis[1]=1;
24 for(int i=2;i<=n;i++)
25 if(!vis[i])
26 for(int j=i*i;j<=n;j+=i)
27 vis[j]=1;
28 for(int i=4;i<=n;i+=2)
29 for(int j=2;j<=n;j++)
30 if(vis[j]==0&&vis[i-j]==0)
31 {
32 printf("%d=%d+%d\n",i,j,i-j);break;
33 }
34
35 return 0;
36 }