和上一篇博客同样的解法,将10000之内的全部素数求出便可解题。html
#include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> bool num[10000]={false,false,true}; int a[1000]; int cnt=0; int main() { int n; int i=0,j=0; for(i=3;i<10000;i++) { //初始化全部的数都为素数 num[i]=true; } //从2开始对全部素数的倍数置为false for(i=2;i*i<10000;i++) { if(num[i]==true) { for(j=i*i;j<10000;j+=i) { num[j]=false; } } } //以上将10000之内的全部素数计算完 while(scanf("%d",&n)!=EOF) { int min=10000; int num1=0,num2=0; for(i=n/2;i>2;i--) { if(num[i]==true&&num[n-i]==true) { printf("%d %d\n",i,n-i); break; } } } return 0; }