【模板】歐拉篩法(線性篩法)
1 int n; 2 int p[MAX_N], cnt; 3 bool b[MAX_N]; 4 5 void Euler() 6 { 7 b[0] = b[1] = 1; 8 for(register int i = 2; i <= n; ++i) 9 { 10 if(!b[i]) p[cnt++] = i; 11 for(register int j = 0; i * p[j] <= n; ++j) 12 // 不需要判斷j < cnt, 因為中途定然會break出去 13{ 14 b[i * p[j]] = 1; 15 if(!(i % p[j])) break; 16 // 當出現這種情況時, i * p[j + k(k > 0, j + k < cnt)]的情況一定會被後面給篩掉 17 } 18 } 19 return; 20 }
【模板】歐拉篩法(線性篩法)
相關推薦
【模板】歐拉篩法(線性篩法)
urn col 情況 reg spa bre 歐拉篩法 () 需要 1 int n; 2 int p[MAX_N], cnt; 3 bool b[MAX_N]; 4 5 void Euler() 6 { 7 b[0] = b[1] = 1; 8
【模板】歐拉篩
ont euler pri sans nbsp mil rime clas == 歐拉好像是叫Euler不過還是叫oula更好聽... 1 void oula() { 2 memset(is_prime, 1, sizeof(is_prime));
【模板】歐拉函數
範圍 nbsp for 有一個 register pan span style line 1 inline int Eular(int n) // [1,n]範圍內與n互質的數 2 { 3 int last, num; 4 last = num
LG5901 【模板】歐拉定理
lin flag sam 說明 輸出 its cpp 分析 math 題意 題目描述 給你三個正整數,$a,m,b$,你需要求: $a^b \mod m$ 輸入輸出格式 輸入格式: 一行三個整數,$a,m,b$ 輸出格式: 一個整數表示答案 輸入輸出樣例 輸入樣
洛谷 P3380 【模板】二逼平衡樹(樹套樹)
span r+ namespace chan 優先級 efi 當前 name cst 洛谷 P3380 【模板】二逼平衡樹(樹套樹) 線段樹套treap: 就是線段樹每個節點放一個treap。建樹復雜度應該是$n log n$,操作1,3,4,5的復雜度是$(log n
luogu3380 【模板】二逼平衡樹(樹套樹)
scanf main pan gtd node body pre turn rotate #include <iostream> #include <cstdlib> #include <cstdio> #include <ctim
洛谷 P3810 【模板】三維偏序(陌上花開) (cdq分治模板)
三維 答案 就是 mes esp while lowbit -- cst 在solve(L,R)中,需要先分治solve兩個子區間,再計算左邊區間修改對右邊區間詢問的貢獻。 註意,計算額外的貢獻時,兩子區間各自內部的順序變得不再重要(不管怎麽樣左邊區間的都發生在右邊之前)
洛谷 P3380 bzoj3196 Tyvj1730 【模板】二逼平衡樹(樹套樹)
結果 數值 namespace del sca first || add int 【模板】二逼平衡樹(樹套樹) 題目描述 您需要寫一種數據結構(可參考題目標題),來維護一個有序數列,其中需要提供以下操作: 查詢k在區間內的排名 查詢區間內排名為k的值 修改某一位值上的數值
P3810 【模板】三維偏序(陌上花開)
模板題 eset ans turn res vid ios 一道 模板 題目背景 這是一道模板題 可以使用bitset,CDQ分治,K-DTree等方式解決。 題目描述 有 nn 個元素,第 ii 個元素有 a_iai?、b_ibi?、c_ici? 三個屬性,設 f(i)f
luogu【模板】三維偏序(陌上花開)
嘟嘟嘟 很顯然我開始學\(CDQ\)分治了。 我剛開始學的時候看了一篇部落格,上面全是一些抽象的概念,看完後真是一頭霧水,最後還不得不抄了這題的程式碼。 但這樣可不行呀…… 於是我就不打算再扣那篇部落格,而是自己想,最後真的自己想明白了。 (個人感覺這道題跟\(CDQ\)分治關係不大) 首先想一下二維偏序
P3380 【模板】二逼平衡樹(樹套樹)
思路 若opt=1 則為操作1,之後有三個數l,r,k 表示查詢k在區間[l,r]的排名 若opt=2 則為操作2,之後有三個數l,r,k 表示查詢區間[l,r]內排名為k的數 若opt=3 則為操作3,之後有兩個數pos,k 表示將pos位置的數修改為k 若opt=4 則為操作4,之後有三個數l,r,k
P3810 【模板】三維偏序(陌上花開)(cdq分治)
思路 看到這種偏序類的題目,而且不要求強制線上,可以立刻想到cdq分治 注意這題有一個問題,就是詢問的是小於等於而不是小於,如果相等的話兩個元素會相互貢獻,而cdq的特點是右區間不能對左邊有影響,所以要先去重,再然後就是板子 程式碼 #include <cstdio> #include &
【模板】二逼平衡樹(樹套樹)
upd 平衡樹 string erase tro -s rom cst mit 題面 題解 過年的假期裏肯定要用硬核數據結構打發時間啊 所以我大膽嘗試,用了一種速度不能算最快但是碼量絕對是很大的一種方法 居然控制在了6KB以內 線段樹套紅黑樹(逃 這是一次前所未有的嘗試 因
P3810 【模板】三維偏序(陌上花開)cdq分治
debug syn ffffff struct ++ 技術分享 歸並 set string 傳送門:https://www.luogu.org/problemnew/show/P3810 cdq分治的模板題,第一層外部排序,第二層cdq歸並排序,這個時候不用考慮第一次的
【模板】尤拉篩法(線性篩法)
1 int n; 2 int p[MAX_N], cnt; 3 bool b[MAX_N]; 4 5 void Euler() 6 { 7 b[0] = b[1] = 1; 8 for(register int i = 2; i <= n; ++i) 9
歐拉篩法(線性篩法)與解積性函數
日常 rime ++ 下午 nbsp http image 發現 details 日常吐槽:嘖嘖嘖今天真是玄幻的一天。早上睡到9:10發現睡過了一個半小時,在9:30狂奔來機房 + 吃早餐,最後只剩一個半小時心態崩—>光榮爆零???又在下午四點把全部題改完
【51nod】尤拉函式之和(數論,杜教篩)
文章目錄 題目 分析 一個性質 嘗試遞推 分塊 打表 線性篩尤拉函式 一個性質 線性篩 程式碼 題目 12
【模板】尤拉定理(洛谷P5091)
https://ouuan.blog.luogu.org/solution-p5091 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using
【bzoj4804】歐拉心算 歐拉函數
rim .cn pre 情況 fine true lin () load 題目描述 給出一個數字N 輸入 第一行為一個正整數T,表示數據組數。 接下來T行為詢問,每行包含一個正整數N。 T<=5000,N<=10^7 輸出 按讀入順序輸出答案。
[BZOJ2818] Gcd (數論,歐拉函數,線性篩)
name 歐拉 using pre clu 必須 fast har typedef 題目鏈接:http://www.lydsy.com/JudgeOnline/problem.php?id=2818 必須用線性篩。 1 #include <bits/stdc