LightOj 1259 Goldbach`s Conjecture 素数筛法

来源:互联网 发布:国内财经媒体排名 知乎 编辑:程序博客网 时间:2024/05/15 10:39

链接 : LOJ 1259

题解

一般素数筛法, 注意空间复杂度


code

#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int N = 10000000;int prime[N / 10 + 5]; bool f[N + 5];/**bool型省空间*/void getPrime(){    memset(prime, 0, sizeof prime);    memset(f, 0, sizeof f);    /**prime[0] = 0;*/    f[1] = 1;    for(int i = 2; i < N; ++i){/**素数筛法*/        if(!f[i]){            prime[++prime[0]] = i;        }        for(int j = 2; i * j < N; ++j)            f[i * j] = 1;    }}int main(){    int t, n;    cin >> t;    getPrime();    for(int kase = 1; kase <= t; ++kase){        int ans = 0;        cin >> n;        for(int i = 1; prime[i] * 2 <= n; ++i){            if(!f[n - prime[i]]) ++ans;        }        cout << "Case " << kase << ": " << ans << endl;    }    return 0;}
0 0