POJ 2262 Goldbach's Conjecture(素數相關),pojconjecture

來源:互聯網
上載者:User

POJ 2262 Goldbach's Conjecture(素數相關),pojconjecture

POJ 2262 Goldbach's Conjecture(素數相關)

http://poj.org/problem?id=2262

題意:

       給你一個[6,1000000]範圍內的偶數,要你將它表示成兩個素數相加和的形式。如果存在多組解,請輸出兩個素數差值最大的解。

分析:

       首先我們用素數篩選法求出100W以內的所有素數。

       篩選法求素數可見:

       http://blog.csdn.net/u013480600/article/details/41120083

       對於給定的數X,如果存在素數a+素數b==X且a與b的差距最大。那麼一定只需要從小到大枚舉素數a就行,然後用X-a就是b。再判斷b是否是素數即可。(想想是不是

AC代碼:

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=1000000;//素數篩選法bool not_prime[maxn+5];//not_prime[i]=true表i不是素數int prime[maxn+5];int get_prime(){    memset(prime,0,sizeof(prime));    //注意:not_prime[i]=false時,i為素數    memset(not_prime,0,sizeof(not_prime));    for(int i=2;i<=maxn;i++)    {        if(!not_prime[i]) prime[++prime[0]]=i;        for(int j=1;j<=prime[0]&&prime[j]<=maxn/i;j++)        {            not_prime[i*prime[j]]=true;            if(i%prime[j]==0) break;        }    }    return prime[0];}int main(){    //產生100W以內所有素數    get_prime();    int x;    while(scanf("%d",&x)==1 && x)    {        int a,b;//x被拆分為a和b兩個數        bool ok=false;        for(int i=1;i<=prime[0] && prime[i]<=x/2;i++)        {            a=prime[i];            b=x-a;            if(!not_prime[b])//若b是素數            {                ok=true;                break;            }        }        if(ok) printf("%d = %d + %d\n",x,a,b);        else printf("Goldbach's conjecture is wrong.\n");    }    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.