給定兩個整數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的正整數都能唯一分解為有限個質數的乘...