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輸出...