積性函式線性篩

2022-04-14 06:50:57 字數 2244 閱讀 8846

oi中有時需要我們線性篩某些函式,我們篩的主要是積性函式

1st:線性篩素數

#include#includeusing namespace std;

const int maxn=1e4+5;

int n,prime[maxn],vis[maxn],tot;

void get_prime(int n) }}

int main()

2nd:尤拉函式線性篩:

#include#includeusing namespace std;

const int maxn=1e4+5;

int n,prime[maxn],vis[maxn],phi[maxn],tot;

void get_phi(int n)

phi[i*prime[j]]=phi[i]*phi[prime[j]];

} }}int main()

尤拉函式其他求法:

求單個數的尤拉函式:

1 #include2 #include3 #include4 #include5

using

namespace

std;

6intn;7

int phi(int

n)14}15

if(n>1) m=m/n*(n-1

);16

return

m;17}18

intmain()

view code

複雜度略大於線性的求法:

1 #include2 #include3 #include4 #include5

using

namespace

std;

6int n,phi[1000006];7

void get_phi(int

n)14}15

}16}17

intmain()

23return0;

24 }

view code

尤拉函式乙個性質:$\sum\limits_\phi(d)=n$

3rd:莫比烏斯函式線性篩(雖然我不知道莫比烏斯函式是什麼以及怎麼用)

#include#includeusing namespace std;

const int maxn=1e4+5;

int n,prime[maxn],vis[maxn],mu[maxn],tot;

void get_mu(int n)

mu[i*prime[j]]=mu[i]*mu[prime[j]];

//根據莫比烏斯函式的定義,這裡也可以寫為

//mu[i*prime[j]]=-mu[i];

} }}int main()

4th:線性篩約數個數:

#include#includeusing namespace std;

const int maxn=1e4+5;

int n,prime[maxn],vis[maxn],d[maxn],tot,a[maxn];

void get_d(int n)

d[i*prime[j]]=d[i]*d[prime[j]];

a[i*prime[j]]=1;

} }}int main()

5th:線性篩約數和:

#include#includeusing namespace std;

const int maxn=1e4+10;

int n,prime[maxn],vis[maxn],sd[maxn],sum[maxn],low[maxn],tot;

void getsumd(int n)

low[i*prime[j]]=prime[j];

sum[i*prime[j]]=prime[j]+1;

//這裡low和sum不是積性函式

sd[i*prime[j]]=sd[i]*sd[prime[j]];}}

}int main()

6th:其他積性函式?卷積?不會了。。。

偽**:

vis[1] = low[1] = 1; h[1] = 初始化 

for(int i = 2; i <= n; i++)

h[i * prime[j]] = h[i] * h[prime[j]];

low[i * prime[j]] = prime[j];}}

線性篩篩積性函式

概念 定義域為正整數的函式是數論函式。設p,q互質,f p q f p f q 稱f為積性函式。如約數,尤拉,莫比烏斯。任意p,q,f p q f p f q 稱f為完全積性函式。如1函式,即f i 1。我們一般用線性篩就可以預處理積性函式。尤拉phi void phii for int j 1 j...

線性篩法與積性函式

尤拉函式 1.varphi p p 1 證明 顯然 2.varphi i p p varphi i if space i bmod p 0 引理1 varphi p a p 1 p 證明 比 p a 小的數一共有 p a 1 個,其中與 p a 不互質的且小於 p a 的 即 p 的倍數 p t 一...

積性函式篩法

很多常用的數論函式都是積性函式,而在題目中,我們常常需要線性 甚至更高 的篩法。對於積性函式,我們可以在篩素數的基礎上稍加修改,即可完成線性篩。首先,注意到積性函式的特點 f xy f x times f y 而可以線性篩的積性函式,需要知道以下兩個式子的快速求法 f p quad f p k p ...