每个不小于6的偶数都可以表示为两个素数之和
编写一个函数,输出6-100000内所有偶数可以表示为哪两个素数之和,如果一个偶数有多种表示方式,输出任意一种即可。
#include<stdio.h> #include<math.h> const int Max=100010; int a[Max]; void isprime() { for(int i=1;i<Max;i++) a[i]=i; a[1]=0; for(int i=2;i<=sqrt(Max+0.5);i++) { if(a[i]) { for(int j=2;i*j<Max;j++) { a[i*j]=0; } } } } int main() { isprime(); int i,n; while(scanf("%d",&n)!=EOF) { i=3; while(!a[i]||!a[n-i]) { i+=2; } printf("%d %d\n",a[i],a[n-i]); } return 0; }
原文:http://www.cnblogs.com/XDJjy/p/3648819.html