HDU 1397 - Goldbach's Conjecture (筛素数)

题意

找出一个偶数能分解成几对素数和

思路

一遍扫描

代码

void GetPrimeTable()
{
    int m = (int)sqrt(MAXN + 0.5);
    for (int i = 2; i <= m; i++) if (!vis[i])
        for (int j = i*i; j < MAXN; j += i) vis[j] = 1;
}
 
int main()
{
    GetPrimeTable();
    int n;
    while (scanf("%d", &n), n)
    {
        int cnt = 0;
        for (int i = 2; i <= (n>>1); i++)
        {
            if (vis[i] || vis[n-i]) continue;
            cnt++;
        }
        printf("%d\n", cnt);
    }
    return 0;
}

Powered by Jekyll and Theme by solid