HDU1262 寻找素数对

题目链接: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;
}

 

 

 

posted @ 2012-05-02 17:14  龙杉老师  阅读(352)  评论(0编辑  收藏  举报