數論 質數距離

2021-10-04 02:13:18 字數 1362 閱讀 6821

給定兩個整數l和u,你需要在閉區間[l,u]內找到距離最接近的兩個相鄰質數c1和c2(即c2-c1是最小的),如果存在相同距離的其他相鄰質數對,則輸出第一對。

同時,你還需要找到距離最遠的兩個相鄰質數d1和d2(即d1-d2是最大的),如果存在相同距離的其他相鄰質數對,則輸出第一對。

輸入格式

每行輸入兩個整數l和u,其中l和u的差值不會超過1000000。

輸出格式

對於每個l和u ,輸出乙個結果,結果佔一行。

結果包括距離最近的相鄰質數對和距離最遠的相鄰質數對。(具體格式參照樣例)

如果l和u之間不存在質數對,則輸出「there are no adjacent primes.」。

資料範圍

1≤l輸出樣例:

2,3 are closest, 7,11 are most distant.

there are no adjacent primes.

思路:線性篩法只能篩選出1-n的數,但是要篩選出很大的數現在,而根據性質,每乙個很大的數n都存在乙個小於等於根號n的質因子,所以先篩選出1到根號n的所有質因子,然後拿這些質因子篩選出那些範圍內的合數,然後再依次列舉比較

#include

#include

#include

#include

using

namespace std;

const

int n =

1000010

;typedef

long

long ll;

int primes[n]

, cnt;

bool st[n]

;void

init

(int n)}}

intmain()

cnt =0;

for(

int i =

0; i <= r - l; i ++)if

(!st[i]

&& i + l >=2)

primes[cnt ++

]= l + i;

if(cnt <2)

puts

("there are no adjacent primes.");

else

printf

("%d,%d are closest, %d,%d are most distant.\n"

, primes[minp]

, primes[minp +1]

, primes[maxp]

, primes[maxp +1]

);}}

return0;

}

196 質數距離

196.質數距離 題目描述 給定兩個整數l和u,你需要在閉區間 l,u 內找到距離最接近的兩個相鄰質數c1和c2 即c2 c1是最小的 如果存在相同距離的其他相鄰質數對,則輸出第一對。同時,你還需要找到距離最遠的兩個相鄰質數d1和d2 即d1 d2是最大的 如果存在相同距離的其他相鄰質數對,則輸出第...

數論基礎之質數

文章是看了好多好多大佬的部落格才自己總結出來的,有些地方覺得大佬的文字很精煉於是學習了一下,若是有人認為哪些地方我是不道德的,請指出,謝謝。質數,也稱素數,只包含兩個因數,且乙個因數為1,乙個因數為它本身。無論是數論 計算機應用上還是acm上,質數都是基礎且極其重要。於acm上,質數經常用於判斷乙個...

數論問題之質數

若乙個正整數無法被1和它自身之外的任何自然數整除,則稱該數為質數 素數 否則該數為合數。質數的判定用試除法 bool is prime int n return true 質數的篩選方法 埃式篩法和線性篩法 鏈結 之前寫過,就不寫了 算術基本定理 任何乙個不大於1的正整數都能唯一分解為有限個質數的乘...