好久沒寫部落格了。不過noip的努力一直沒有停止過~
今天學習了線性篩的擴充套件,正好時間有空,就來寫部落格了
線性篩思路還是比較簡單,即保證每個數隻被它最小的因數篩去一次,
先看裸的**:
#includeusing namespace std;
const int maxn=1000010;
int pri[maxn],fl[maxn],cnt;
void find_pri(){
fl[1]=true;
for(int i=2;i不多講了。
尤拉函式表示方法為
它滿足性質:
(具體證明就不寫了~)
所以上**
void find_pri(){
fl[1]=phi[1]=true;
for(int i=2;i3.線性篩與莫比烏斯函式
莫比烏斯函式是個奇怪的函式(好像只有莫比烏斯反演才會用到吧)。
它的定義式為
直接上**:
#includeusing namespace std;
const int maxn=1000010;
int pri[maxn],fl[maxn],cnt;
int mu[maxn];
void find_pri(){
fl[1]=mu[1]=1;
for(int i=2;i那麼線性篩的基本應用就是這些
線性篩及其應用
素數的線性篩法 is prime記錄當前下標的數是不是乙個素數 第一次篩掉2的倍數 第二次篩掉3的倍數 以此。當然如果我現在要篩掉14的倍數,一定是篩2 14 3 14 5 14 7 14。篩到7就可以停了 比7大的素數比如11 11 14 11 2 7 11 2 7 在22這個數的時候會被篩到的 ...
jzp線性篩及其簡單應用
前言 很久以前看過了線性篩,沒怎麼注意原理,但是後來發現線性篩還有很有用的。比如上次做的一道題就需要找出每個數的最小質因子,先篩再找就太慢了。一看線性篩發現就可以直接在篩的過程中處理出來了!今天又學習了屌炸天的jzp線性篩,可以在o n 的時間內求出尤拉函式,莫比烏斯函式等積性函式 原理 首先jzp...
線性篩法的應用
by qw 線性篩法最基礎的功能就是求 1,n 中的素數,以此為基礎,可以對他進行一些變形。變形後的線性 篩法可以實現許多其他的功能。下文中的tot均指一定區間內的質數個數 先看一道簡單的問題 求 1,n 中的m個數的最大質因子的序數 hdoj2136 這個問題可以利用線性篩法打乙個質數表,然後二分...