素数问题练习_HDOJ1262
和上一篇博客一样的解法,将10000以内的所有素数求出即可解题。
#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;
}