和上一篇博客同樣的解法,將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; }