1 solutions
-
1
#include<bits/stdc++.h> using namespace std; const int N=1e6+10; bool st[N],idx; vector<int> p; void get(int n) { for(int i=2;i<=n;i++) //枚举所的数 { if(!st[i]) p.push_back(i); //当前数没有被标记过,说明不是质数 for(int j=0;p[j]*i<=n;j++) //枚举i的质数倍 { st[i*p[j]]=1; //标记 if(i%p[j]==0) //如果p[j]是i的因子,那么标记跳出循环, { break; } } } } int main() { get(N-1); int n; while(scanf("%d",&n),n) { for(int i=1;i<p.size();i++) { int a=p[i]; int b=n-a; if(!st[b]) { printf("%d = %d + %d\n",n,a,b); break; } } } return 0; }
- 1
Information
- ID
- 983
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 5
- Tags
- (None)
- # Submissions
- 42
- Accepted
- 9
- Uploaded By