这是一道数论入门题目!其实很简单,就是先利用素数筛选法,先打表!找出10000以内的素数!
#include<stdio.h>
#include<iostream>
using namespace std;
const int maxn=10000;
int a[maxn];
void prime()
{
int i,j;
for(i=2;i<maxn;i++)
{
a[i]=1;
}
a[0]=a[1]=0;
for(i=2;i<maxn;i++)
{
for(j=2;i*j<maxn;j++)
{
if(a[i])
a[j*i]=0;
}
}
}
int main()
{
prime();
int m,n;
while(scanf("%d",&m)!=EOF)
{
n=m/2;
while(n>=2)//而这里就是从最近的开始找!节省时间,这样暴力才不会超时!
{
if(a[n]&&a[m-n])
{
printf("%d %d\n",n,m-n);
break;
}
n--;
}
}
return 0;
}