Acwing196 質數距離

2021-10-25 05:50:31 字數 1354 閱讀 3271

給定兩個整數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 < u < 2^31-1

輸入樣例:

2 17

14 17

輸出樣例:
2,3 are closest, 7,11 are most distant.

there are no adjacent primes.

l和u的差值不會超過1000000,那就對於 x,用 [2,sqrt(x)] 間的素數把[l, u]中的素數篩出來,然後for一遍看哪兩個之間差最大

技巧:for(ll j = max(2ll*p,(l+p-1)/p * p) ; j<=r ; j+=p )

1. max(2p,(l + p -1) / p * p) 表示大於等於2p的第乙個p的倍數

2. 因為區間比較大,可以用 j - l 把j變小,最後算的時候再加上就行

int v[n]

,prime[n]

;int w[n]

,q=0

;int

init

(int n)

for(

int j=

1;j<=m;j++)}

return m;

}int

main()

} q =0;

for(

int i=

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

(q <=1)

printf

("there are no adjacent primes.\n");

else

if(prime[i]

- prime[i-1]

> maxn)

}printf

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

,x1,y1,x2,y2);}

}return0;

}

ACWING196 質數距離

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

196 質數距離

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

數論 質數距離

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