模版 區間篩

2021-09-27 12:53:10 字數 689 閱讀 7678

參考**:

給定整數a和b,請問區間[a,b)內有多少個素數?a12,b-a<=106

因為b以內合數的最小質因數一定不超過sqrt(b),如果有sqrt(b)以內的素數表的話,就可以把線性篩用在[a,b)上了.

先分別做好[2,sqrt(b))的表和[a,b)的表,然後從[2,sqrt(b))的表中篩得素數的同時,也將其倍數從[a,b)的表中劃去,最後剩下的就是區間[a,b)內的素數了.

#include

#include

#include

#include

using namespace std;

typedef

long

long ll;

#define inf 0x3f3f3f3f

#define mm(a) memset(a, 0, sizeof(a))

const

int maxn =

1e6+10;

ll v1[maxn]

, v2[maxn]

;void

prime

(ll a, ll b)}if

(a ==

0|| a ==

1) v2[0]

=0;}

intmain()

return0;

}

樹狀陣列基本模版 區間更新,單點查詢

題目描述 如題,已知乙個數列,你需要進行下面兩種操作 1.將某區間每乙個數數加上x 2.求出某乙個數的和 輸入格式 第一行包含兩個整數n m,分別表示該數列數字的個數和操作的總個數。第二行包含n個用空格分隔的整數,其中第i個數字表示數列第i項的初始值。接下來m行每行包含2或4個整數,表示乙個操作,具...

caioj1400 差分約束(模版) 區間

題目傳送門 製作人 陳保良 這種演算法的基礎是最短路,不會的請先學小白菜1088 include include include using namespace std struct bian a 510000 int len,last 51000 void ins int x,int y,int ...

線性篩 區間篩

求l到r之間的素數1 l 231 1 1 leq l 1 l231 1由於範圍過大只需要求得r 2 sqrt 2 2r 線性篩素數時間複雜度o n int n,m int prime 100000 vis 100005 void primes int n for int j 1 j m j 區間篩素...