【poj 2262】 Goldbach's Conjecture

来源:互联网 发布:医学影像软件 编辑:程序博客网 时间:2024/06/05 15:14

题意:

让你验证哥德巴赫猜想,即:任意一个大于2的偶数可以拆成两个质数的和。

思路:

用筛法筛出来素数,枚举验证即可。

代码:

#include <iostream>#include <cstdio>using namespace std;typedef long long ll;const int maxn = 5000010;ll prime[maxn], cnt, n;bool is[maxn];int main(){    is[1] = 1;    for(int i = 2; i <= 1000000; i ++){        if(!is[i]) prime[++cnt] = i;        for(int j = 1; j <= cnt; j ++){            if(prime[j]*i > 1000000) break;            is[prime[j]*i] = 1;            if(i % prime[j] == 0) break;        }    }    while(cin >> n && n != 0){        for(int i = 1; i <= cnt; i ++){            if(!is[n-prime[i]]){                printf("%I64d = %I64d + %I64d\n", n, prime[i], n-prime[i]);                break;            }        }    }    return 0;}
0 0
原创粉丝点击