virtual hust 2013.6.21 NEFU 挑战编程----数论 E - Summation of Four Primes
2013-06-21 14:21
281 查看
题目:Summation of Four Primes
思路:好像有个什么定理说是任意的一个偶数都可以表示成两个素数的和,所以对于输入的n,最糟糕的情况是n=8=2+2+2+2,小于8的无解,对于大于8的情况,如果是奇数,我们就拿一个2和一个3出来,如果是偶数,我们就拿两个2出来,那么剩下的就是求某个偶数等于两个素数之和,继续暴力
View Code
思路:好像有个什么定理说是任意的一个偶数都可以表示成两个素数的和,所以对于输入的n,最糟糕的情况是n=8=2+2+2+2,小于8的无解,对于大于8的情况,如果是奇数,我们就拿一个2和一个3出来,如果是偶数,我们就拿两个2出来,那么剩下的就是求某个偶数等于两个素数之和,继续暴力
#include <cstdio> #include <algorithm> #include <cstring> #include <cmath> #include <iostream> using namespace std; #define maxn 10000001 bool vis[maxn]; int n_prime=0; int prime[maxn/6]; void Prime() { memset(vis,true,sizeof(vis)); for(int i=2;i<maxn;i++) if(vis[i]) { prime[++n_prime]=i; for(int j=2*i;j<maxn;j+=i) vis[j]=0; } } int main() { int n; Prime(); while(scanf("%d",&n)!=EOF) { if(n<8) { printf("Impossible.\n"); continue; } else if(n&1) { printf("2 3 "); n-=5; } else { printf("2 2 "); n-=4; } for(int i=1;i<=n_prime;i++) { if(vis[n-prime[i]]) { printf("%d %d\n",prime[i],n-prime[i]); break; } } } return 0; }
View Code
相关文章推荐
- virtual hust 2013.6.21 NEFU 挑战编程----数论 G - Marbles
- virtual hust 2013.6.21 NEFU 挑战编程----数论 A - Light, more light
- virtual hust 2013.6.21 NEFU 挑战编程----数论 B - Carmichael Numbers
- virtual hust 2013.6.21 NEFU 挑战编程----数论 C - Euclid Problem
- virtual hust 2013.6.21 NEFU 挑战编程----数论 D - Factovisors
- virtual hust 2013.6.21 NEFU 挑战编程----数论 F - Smith Numbers
- virtual hust 2013.6.22 NEFU 挑战编程----数论 H - Repackaging
- 数论刷题-uva【10168】- Summation of Four Primes
- UVA 10168 Summation of Four Primes(数论)
- uva 10168 Summation of Four Primes(数论-哥德巴赫猜想)
- uva 10168 Summation of Four Primes(数论-哥德巴赫猜想)
- UVA 10168 Summation of Four Primes(数论)
- UVa 10168 Summation of Four Primes(数论-哥德巴赫猜想)
- (数论2.1.2)UVA 10168 Summation of Four Primes(欧拉筛法)
- Summation of Four Primes - PC110705
- UVaOJ-10168-Summation of Four Primes 解题报告
- Uva 10168 - Summation of Four Primes
- Summation of Four Primes - PC110705
- Uva 10168 Summation of Four Primes 素数
- virtual hust 2013.6.21 数论基础题目 H - Factoring Large Numbers