Poj_2262 Goldbach's Conjecture(筛法求素数)

来源:互联网 发布:深爱的女孩 网络歌手 编辑:程序博客网 时间:2024/06/03 21:07

题意:

哥德巴赫猜想,一个偶数一定能化为两个质数的乘积。

思路:

练习了一下筛法求素数,不用写不成立的情况,因为目前还没有找出反例。

代码实现:

#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>using namespace std;const int MAX = 1000005;int N;int cnt;bool flag;int prime[MAX/2];bool is_prime[MAX];void sieve();int main(){    sieve();    while( scanf("%d",&N) != EOF ){        if( N == 0 ){            break;        }        flag = false;        for( int i = 0; i < cnt; i++ ){            int a = prime[i];            int b = N-a;            if( is_prime[b] == true ){                flag = true;                printf("%d = %d + %d\n",N,a,b);                break;            }        }    }    return 0;}void sieve(){    cnt = 0;    for( int i = 0; i < MAX; i++ ){        is_prime[i] = true;    }    for( int i = 2; i < MAX; i++ ){        if( is_prime[i] == true ){            prime[cnt++] = i;            for( int j = 2*i; j < MAX; j += i ){                is_prime[j] = false;            }        }    }    return ;}


0 0