時間限制:
3000 ms | 記憶體限制:
65535 kb
難度:2 描述
現在給出你一些數,要求你寫出乙個程式,輸出這些整數相鄰最近的素數,並輸出其相距長度。如果左右有等距離長度素數,則輸出左側的值及相應距離。
如果輸入的整數本身就是素數,則輸出該素數本身,距離輸出0
輸入第一行給出測試資料組數n(0輸出
每行輸出兩個整數 a b.
其中a表示離相應測試資料最近的素數,b表示其間的距離。
樣例輸入
36810
樣例輸出
5 17 111 1
從題目來看,肯定要先打乙個素數表出來,因為最多要輸入1萬個值測試,如果每個值都去計算一次,積少成多,肯定要跪,所以採用埃氏篩法打表,然後就簡單了
#include
#include
#define max 1000005
//int max=1000000;
int a[max];
//這裡一定要定義為全域性變數,不然會報錯,原因溢位
int main(void)
d=d+1;
//2的倍數找完找3的倍數,一直往後找
}while(d<=sqrt(max));
a[1]=1;
//這裡特殊處理兩個值
a[0]=1;
scanf("%d",&z);
// 輸入組數
while(z--)
while(y)
//printf("x的值:%d\n",x);
//printf("y的值:%d\n",y);
//switch
if((x-n)>=(n-y)&&y!=0)
printf("%d %d\n",y,n-y);
else}}
return 0;}
記憶體: 4144
素數距離問題
時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 現在給出你一些數,要求你寫出乙個程式,輸出這些整數相鄰最近的素數,並輸出其相距長度。如果左右有等距離長度素數,則輸出左側的值及相應距離。如果輸入的整數本身就是素數,則輸出該素數本身,距離輸出0 輸入第一行給出測試資料組數n 0輸...
素數距離問題
時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 現在給出你一些數,要求你寫出乙個程式,輸出這些整數相鄰最近的素數,並輸出其相距長度。如果左右有等距離長度素數,則輸出左側的值及相應距離。如果輸入的整數本身就是素數,則輸出該素數本身,距離輸出0 輸入第一行給出測試資料組數n 0輸...
素數距離問題
時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 現在給出你一些數,要求你寫出乙個程式,輸出這些整數相鄰最近的素數,並輸出其相距長度。如果左右有等距離長度素數,則輸出左側的值及相應距離。如果輸入的整數本身就是素數,則輸出該素數本身,距離輸出0 輸入第一行給出測試資料組數n 0 ...