POJ2262.Goldbach's Conjecture(哥德巴赫的猜想)
阿新 • • 發佈:2018-12-22
【題意】
哥德巴赫猜想:大於四的偶數可以分解為兩個奇素數之和
對於給出的數n,如果有多對奇數素數加起來為n,則選擇差值b-a最大化的。 若沒有這樣的一對,則列印"Goldbach's conjecture is wrong."
【思路】
列舉:直接列舉所有的,看是否符合條件,從小到大列舉到中間的話符合條件的也就是差值最大的
#include<stdio.h> #include<string.h> #define MAX 1000001 int prime[MAX]={0}; void sushu() { memset(prime,0,sizeof(prime)); prime[0]=prime[1]=1; int i,j; for(i=2;i<MAX;i++) if(prime[i]==0) for(j=2;i*j<MAX;j++) prime[j*i]=1; } int main() { int n,i; sushu(); while(scanf("%d",&n)==1,n) { for(i=3;i<=n/2;i+=2) if(prime[i]==0&&prime[n-i]==0) { printf("%d = %d + %d\n",n,i,n-i); break; } if(i>n/2) printf("Goldbach's conjecture is wrong.\n"); } return 0; }