藍橋杯 找素數 篩選法

2021-07-11 23:45:40 字數 690 閱讀 5476

演算法提高 找素數  

時間限制:1.0s   記憶體限制:256.0mb

問題描述

給定區間[l, r] , 請計算區間中素數的個數。

輸入格式

兩個數l和r。

輸出格式

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

樣例輸入

2 11

樣例輸出 5

資料規模和約定

2 <= l <= r <= 2147483647 r-l <= 1000000

一般的方法會超時。。

陣列開小了,也會超時。

#include#include#include#includeusing namespace std;

const int max_l = 9999999;

const int max_sqrt_b = 9999999;

typedef long long ll;

bool is_prime[max_l], is_prime_small[max_sqrt_b];

int sum = 0;

void segment_sieve(ll a, ll b)

} }return;

} int main()

printf("%d\n", sum);

return 0;

}

藍橋杯 找素數

題目 素數就是不能再進行等分的整數。比如 7,11。而9不是素數,因為它可以平分為3等份。一般認為最小的素數是2,接著是3,5,請問,第100002 十萬零二 個素數是多少?請注意 2 是第一素數,3 是第二個素數,依此類推。分析 只要會素數的計數就可以解決這個問題。include includeu...

素數篩選法

篩選素數法 搞acm的都知道,素數是數論中必不可少的知識,也是必須要掌握的,關於素數的篩選有好幾種方法,下面一一道來,寫的不好還請提出。第一種是最常規的做法 int main if j sqrt i cout 這種方法肯定是比第一種快的,至於快多少大家可以比較一下,注意到裡面的for迴圈是到sqrt...

素數篩選法

素數篩選法差不多是打標,用前面確定的質數篩選掉後面的合數,然後遍歷下來所有的合數都被篩選掉了,剩下的都是素數。int vis maxn for int i 2 i n i for int j i 2 j n j i vis j 1 這是沒有優化的素數篩選法,也已經很快了,時間複雜度是n log n。...