poj ——2262水题素数问题
void oddp(){int i,j;for (i=2;i<Max;i++)a[i]=1;a[0]=0,a[1]=0;for (i=2;i<Max;i++){if (a[i]==1){for (j=i*2;j<Max;j+=i)a[j]=0;}}}
#include <iostream>#include <stdio.h>using namespace std;#define Max 1000000int a[Max];void oddp(){int i,j;for (i=2;i<Max;i++)a[i]=1;a[0]=0,a[1]=0;for (i=2;i<Max;i++){if (a[i]==1){for (j=i*2;j<Max;j+=i)a[j]=0;}}}int main(){int n;int i,flag;oddp();while (cin>>n&&n!=0){for (flag=0,i=2;i<n;i++){if (a[i]==1&&a[n-i]==1){printf("%d = %d + %d\n",n,i,n-i);flag=1;break;}}if (flag==0)printf("Goldbach's conjecture is wrong.\n");}return 0;}
第三种方法:筛选法,打素数表,然后判断(见本题)。
<!--EndFragment-->