演算法提高 找素數
時間限制: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。...