题目:歌德巴赫猜想,给出一个数字给出两个奇素数使得和为这个数字。
分析:简单题、数论。首先打表求出1000000以内的素数,然后枚举即可。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int used[ 1000005 ];
int prim[ 1000005 ];
int main()
{
int n,count = 0;
memset( used, 0, sizeof(used) );
for ( int i = 2 ; i <= 1000000 ; ++ i )
if ( !used[i] ) {
prim[count ++] = i;
for ( int j = 2*i ; j <= 1000000 ; j += i )
used[j] = 1;
}
while ( scanf("%d",&n) && n ) {
int flag = 0;
for ( int i = 1 ; prim[i] <= n/2 ; ++ i )
if ( !used[n-prim[i]] ) {
printf("%d = %d + %d\n",n,prim[i],n-prim[i]);
flag = 1; break;
}
if ( !flag ) printf("Goldbach's conjecture is wrong.\n");
}
return 0;
}