雖然線性篩有時候挺還好用,但是也不能忽略了埃氏篩
for
(int i =
2; i <=
sqrt
(n);
++i)..
.}
在篩的過程中可以進行一些操作
當然線性篩也可以
#
include
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
const ll max =
1e6+1;
ll p[max]
;ll v[max]
;ll cnt;
intintt()
//這個不超時}}
intintt()
//1e5以上的打表很慢
}}
漂亮數
靈活使用線性篩
#
include
#define
lllong
long
using
namespace std;
const
int maxn =
1e8+9;
const
int mod =
1e9+7;
ll n, m, k,s;
vector <
int> p;
int v[maxn]
, cnt;
int sum[maxn]
;void
xxs()}
}void
work()
}int
main()
演算法競賽高階指南
對於含有 p² 的因子的個數加的 [n/p] 個,本來兩個因子應該被計兩次數,但是至少乙個因子時計過了這部分數,因此不用乘2,後邊的依次。
197 階乘分解(質數)
階乘分解 給定整數 n 試把階乘 n 分解質因數,按照算術基本定理的形式輸出分解結果中的 pi 和 ci 即可。輸入格式 乙個整數n。輸出格式 n 分解質因數後的結果,共若干行,每行一對pi,ci,表示含有pcii項。按照pi從小到大的順序輸出。資料範圍 1 n 106 輸入樣例 5輸出樣例 2 3...
質數線性篩法 O n
埃氏篩法o nloglogn 仍會重複標記合數 such as i 2時 12 2 6,先會被 2 標記已是合數 i 3時 12 3 4,又被標記了一次 我們在生成乙個需要標記的合數時,每次只向現有的數中乘上乙個質因子,並且讓它是所生成合數的最小質因子 code include include us...
演算法 線性篩質數
輸出從0 00到1000000 1000000 100000 0的所有質數。首先0 00和1 11不是質數,從2 22開始逐個判斷是否為質數。如果t tt為質數,那麼對於任意正整數k kk,k t k times t k t不是質數,因此可以將k t k times t k t篩去。如果t tt已經...