數論 8 30題解 prime素數密度

2021-08-21 21:18:37 字數 1059 閱讀 3473

洛谷p835

***給定區間l, r,請計算區間中

素數的個數。

輸入

兩個數 l 和 r。

輸出

一行,區間中素數的個數。

樣例輸入

2 11
樣例輸出

5
時空限制

時間限制 1s/testcase

空間限制 32mb

r-l<=1000000

l <= r <= 2147483647

時間上用質數篩能過

求出2~45000的所有質數(sqrt(2147483647)大約是4300+)

然後將所有是這些質數的倍數的數刪掉,剩下的就是質數

空間上只有32mb,陣列不能開太大,考慮到r-l<=1000000

完全可以只開到100005,之後對於大於100000的l和r,在存質數時

減去l即可。

/*

b[i]==1 i不是質數

b[i]==0 i是質數

*/#include#include#include#include#includeusing namespace std;

int i,j,k,l,t,n,m,ans;

int zhi[100005];

bool b[100005],z[1000005];

inline int read()

int main() }}

for(i=2; i<=100000; i++)if(!b[i])zhi[++zhi[0]]=i;

n=read();

m=read();

for(i=1; i<=zhi[0]; i++) {

for(j=max(n/zhi[i],1); j<=m/zhi[i]; j++) {

if(j==1)continue;

if(j*zhi[i]

數論練習1題解A

先貼題 此題有兩個思路 法1 運用費馬定理和同餘 則結果同餘與2 k,k為對n求1e9 6的模 此處可一位位讀求 也可 高精度 備註 以上均要使用快速冪 如下 include includeusing namespace std char ch 100002 long long power int,...

Happy Equation 題解 數論

這個題目好像乙個假題啊,本以為是什麼高深演算法,其實很簡單 打表發現 a 為奇數答案就是 1 a 為偶數進行分類討論 當 x leq p 進行暴力 check p le x 發現 a x 2 p 0 那麼只需要找有多少個 p le x x a 2 p 0 其實就是找 2 p 裡面有多少個 2 fra...

數論 素數篩選法與整數的素因子分解

篩選法 求出n以內的素數,最快的應該是篩選法。篩選法的思路是 要求10000以內的素數,把1 10000都列出來,1不是素數,劃掉 2是素數,所有2的倍數都不是素數,劃掉 取出下乙個倖存的數,劃掉它的所有倍數 直到所有素數找完為止。這種做法的空間複雜度是o n 時間複雜度o n logn const...