UVa 543 - Goldbach's Conjecture

来源:互联网 发布:拼音读法软件 编辑:程序博客网 时间:2024/06/11 04:26

题目:歌德巴赫猜想,给出一个数字给出两个奇素数使得和为这个数字。

分析:简单题、数论。首先打表求出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;}

原创粉丝点击