南阳oj 素数距离问题

01.#include<iostream>
02.#include<math.h>
03.using namespace std;
04.bool prime(int x)
05.{
06.    if(x==1||x==0)
07.        return false;
08.    else if(x==2||x==3)
09.        return true;
10.    else
11.    {
12.        for(int i=2;i<=sqrt(x);i++)
13.        {
14.            if(x%i==0)
15.                return false;
16.        }
17.        return true;
18.    }
19. }
20.int main ()
21.{
22.    int n;
23.    cin>>n;
24.    while(n--)
25.    {
26.        int m;
27.        cin>>m;
28.        for(int i=0;i<=m;i++)
29.        {
30.            if(prime(m-i))
31.            {
32.                cout<<m-i<<" "<<i<<endl;
33.                break;
34.            }   
35.            else if(prime(m+i))
36.            {
37.                cout<<m+i<<" "<<i<<endl;
38.                break;
39.            }
40.        }
41.    }
42.    return 0;
43.}
 
注意数据的处理和范围,输入的整形数m的范围是0<m<1000000,所以要考虑到当m=1的情况。
posted @ 2018-07-15 11:28  换牙  阅读(217)  评论(0)    收藏  举报