素数距离问题

#include<iostream>
#include<math.h>
using namespace std;

bool prime(int iPrem)
{
    if(iPrem==2)
        return true;
    else
        for(int i=2;i<=sqrt(iPrem);i++)
            if(iPrem%i==0)
                return false;
    return true;

}

int main()
{
    int i,m,num,iPre=0,iNex=0;
    cin>>num;
    while(num--)
    {
        cin>>m;
        if(m<2)
        {
            if(m==1)
                cout<<"2 "<<"1"<<endl;
            if(m==0)
                cout<<"2 "<<"2"<<endl;
        }
        else
        {
            if(prime(m))
                cout<<m<<" 0"<<endl;
            else
            {
                for(i=1;i<m;i++)
                    if(prime(m-i))
                    {
                        iPre=i;
                        break;
                    }
                for(i=1;i<m;i++)
                    if(prime(m+i))
                    {
                        iNex=i;
                        break;
                    }
                if(iPre<=iNex)
                    cout<<(m-iPre)<<" "<<iPre<<endl;
                else
                    cout<<(m+iNex)<<" "<<iNex<<endl;
            }
        }
    }
    return 0;
}

 

posted @ 2012-09-10 23:49  Afraid  阅读(478)  评论(0)    收藏  举报