「質數距離」 題解

2021-10-09 01:37:16 字數 1500 閱讀 6728

質數距離(liuser』s oj)

題目描述

給定兩個整數l,r,求閉區間【l,r】中相鄰兩個質數差值最小的數對與差值最大的數對。當存在多個時,輸出靠前的素數對。

輸入格式

多組資料。每行兩個數l,r。

輸出格式

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

結果包括距離最近的相鄰質數對和距離最遠的相鄰質數對。(詳見樣例1輸出)

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

樣例

樣例1輸入

2

1714

17

樣例1輸出
2

,3 are closest,7,

11 are most distant.

there are no adjacent primes.

資料範圍

1<=l由於l和r的範圍很大,所以,直接通過素數篩跑出答案會超時,但是,l和r的區間較小,因此我們可以先通過素數篩跑出2~sqrt(r)的所有素數,對於每個素數a,把【l,r】中所有能被a整除的數(i*a)(合數)標記,所有未被標記的數就是素數,把相鄰的2個素數比較,找出差最小和最大的。–lhy

#include

using

namespace std;

long

long l,r,s[

1000005

],prime[

1000005

],f[

1000005

],cnt=

0,a,b,p,max,min,x,y,x2,y2;

intmain()

for(

long

long j=

1;j*i<

100005

;j++)}

//素數篩,找出素數

while

(scanf

("%lld%lld"

,&l,

&r)!=

eof)

//l==1時注意l要變成2

memset

(f,0

,sizeof

(f))

;for

(long

long i=

0;i} p=-1

; max=-1

; min=

0x3f3f3f3f

;for

(long

long i=

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

(max//差值最大的數對

if(min>i-p)

//差值最小的數對

p=i;}}

if(max==-1

)else

}return0;

}

洛谷2758 編輯距離 題解

字串編輯距離板子題,留乙個底,方便日後。設a和b是兩個字串。我們要用最少的字元操作次數,將字串a轉換為字串b。這裡所說的字元操作共有三種 1 刪除乙個字元 2 插入乙個字元 3 將乙個字元改為另乙個字元 皆為小寫字母!題解網上搜一大堆 其實光看 也都能看懂這道題。include include in...

素數距離題目

好久沒有刷題了,於是去南陽理工的oj上從刷入門題,練練手,題目如下 時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 現在給出你一些數,要求你寫出乙個程式,輸出這些整數相鄰最近的素數,並輸出其相距長度。如果左右有等距離長度素數,則輸出左側的值及相應距離。如果輸入的整數本身就是素...

P2136 拉近距離 題解

題目傳送門 可能更好的閱讀體驗 對於乙個有向圖 g 有 n 個點,m 個邊,把每一條邊用三元組 s i,t i,w i 其中 s i,t i 表示兩個端點,w i 表示這條邊的長度。如果這個圖中從點 1 到點 n 的最短路可以無限縮小,請輸出forever love,否則輸出最短路長度。通過資料範圍...