题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1262
用筛选法求稍微方便一些:
#include<iostream> using namespace std; #include<math.h> #define M 10005 int a[M+1]={1,1}; void is_prime() //预处理 { int m=(int)(sqrt(M*1.0)); for(int i=2;i<=m;i++) if(a[i]==0) for(int j=i*i;j<=M;j+=i) a[j]=1; } int main() { int n; is_prime(); while(scanf("%d",&n)!=EOF) { for(int i=n/2;i>=0;i--) if(a[i]==0&&a[n-i]==0) { printf("%d %d\n",i,n-i); break; } } return 0; }