素數距離問題

素數距離問題

時間限制:3000 ms  |  內存限制:65535 KB
難度:2
描述
現在給出你一些數,要求你寫出一個程序,輸出這些整數相鄰最近的素數,並輸出其相距長度。如果左右有等距離長度素數,則輸出左側的值及相應距離。
如果輸入的整數本身就是素數,則輸出該素數本身,距離輸出0
輸入
第一行給出測試數據組數N(0<N<=10000)
接下來的N行每行有一個整數M(0<M<1000000),
輸出
每行輸出兩個整數 A B.
其中A表示離相應測試數據最近的素數,B表示其間的距離。
樣例輸入
3
6
8
10

樣例輸出
5 1
7 1
11 1
個人理解:先寫一個函數判斷輸入的是否爲素數,然後根據題目的要求,首先組別非負,利用if,else,else if寫出可能出現的三種情況,從而得到我們想要的結果.

結果 時間 內存 語言
Accepted 80 240 C

#include<stdio.h>
int yy(int(n))
{
    int i;
     if(n==1)return 0;
    for( i=2;i*i<=n;i++)
       if(n%i==0)
            return 0;
    return 1;
}
int main()
{
    int m,n,A,B,C,D;
    scanf("%d",&m);
    while(m--)
    {
        scanf("%d",&n);
        if(yy(n))
            printf("%d 0\n",n);
            else{
                A=B=n;
                while(!yy(A))
                {
                    A=A+1;
                }
                while(!yy(B))
                {
                    B=B-1;
                }
                C=A-n;
                D=n-B;
                if(B==0)
                {
                  printf("%d %d\n",A,C);
                }
                 else if(C>=D)
                  printf("%d %d\n",B,D);
                 else
                  printf("%d %d\n",A,C);

            }

    }
    return 0;
}






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章