NYOJ 24 素數距離問題

2021-07-03 23:45:33 字數 693 閱讀 7782

nyoj24 素數距離問題

描述現在給出你一些數,要求你寫出乙個程式,輸出這些整數相鄰最近的素數,並輸出其相距長度。如果左右有等距離長度素數,則輸出左側的值及相應距離。

如果輸入的整數本身就是素數,則輸出該素數本身,距離輸出0

輸入第一行給出測試資料組數n(0

int a[1000004];

int main()

}scanf("%d",&g);

while(g--)

else

while(a[m2])

if(k<=l)

else}}

return 0;

思路詳解:首先定義乙個大的陣列,並未初始化,其值為0;然後使用篩法求素數,把不是素數的標記為1;即下標若是素數,則元素值為0,否則為1;顯然0,1不是素數,首先排除,2是素數,忽略,從4開始,依次加二,把4以上多有偶數排除;然後考慮奇數,從3開始,若是3的倍數,排除,然後再加2,即5,若是5的倍數,排除,依次類推,即把所有邊界數以內的素數篩選出來;當然要計算n到兩邊素數的距離,即要考慮邊界;若是從1~1000000以內的數,則由於下標問題,即1000000未在考慮範圍,系統把下標為1000000的元素的值預設為0;則若輸入的n值為999999,即出現漏洞,即把1000000也看為素數,顯然1000000不是素數,就需要要求稍稍誇大邊界,只需把越界的最小的素數找出來,則問題就解決了,即把陣列定義為a[1000004]即可。

NYOJ 24 素數距離問題

時間限制 3000 ms 記憶體限制 65535 kb難度 2 描述 現在給出你一些數,要求你寫出乙個程式,輸出這些整數相鄰最近的素數,並輸出其相距長度。如果左右有等距離長度素數,則輸出左側的值及相應距離。如果輸入的整數本身就是素數,則輸出該素數本身,距離輸出0 輸入第一行給出測試資料組數n 0輸出...

NYOJ24 素數距離問題

時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 現在給出你一些數,要求你寫出乙個程式,輸出這些整數相鄰最近的素數,並輸出其相距長度。如果左右有等距離長度素數,則輸出左側的值及相應距離。如果輸入的整數本身就是素數,則輸出該素數本身,距離輸出0 輸入第一行給出測試資料組數n 0輸...

nyoj 24 素數距離問題

時間限制 3000 ms 記憶體限制 65535 kb難度 2 描述 現在給出你一些數,要求你寫出乙個程式,輸出這些整數相鄰最近的素數,並輸出其相距長度。如果左右有等距離長度素數,則輸出左側的值及相應距離。如果輸入的整數本身就是素數,則輸出該素數本身,距離輸出0 輸入第一行給出測試資料組數n 0輸出...