前置知识

Dirichlet卷积初步

前言

本章节默认

n

=

i

=

1

t

p

i

k

i

n=\prod_{i=1}^{t}p_i^{k_i}

n=i=1tpiki

一、欧拉函数

1.

1.

1.通项公式

φ

(

n

)

=

i

=

1

t

(

p

i

1

)

p

i

k

i

1

=

i

=

1

t

(

1

1

p

i

)

p

i

k

i

=

n

i

=

1

t

(

1

1

p

i

)

\varphi(n)=\prod_{i=1}^{t}(p_i-1)p_i^{k_i-1}=\prod_{i=1}^{t}(1-\frac{1}{pi})p_i^{k_i}=n\prod_{i=1}^{t}(1-\frac{1}{pi})

φ(n)=i=1t(pi1)piki1=i=1t(1pi1)piki=ni=1t(1pi1)
证明可以在百度百科中搜到,这里略过。证明

2.

2.

2.欧拉定理降幂

欧拉定理

a

p

1

1

(

m

o

d

  

p

)

p

a^{p-1}\equiv1(mod\space \space p)\qquad p为质数

ap11(mod  p)p
证明:
引理:

m

a

n

a

0

(

m

o

d

  

p

)

g

c

d

(

a

,

p

)

=

1

(

m

n

)

p

若ma-na \equiv 0(mod\space \space p)且gcd(a,p)=1,则(m-n)为p的倍数

mana0(mod  p)gcd(a,p)=1(mn)p

那么

a

,

2

a

,

3

a

,

.

.

.

,

(

p

1

)

a

%

p

a,2a,3a,…,(p-1)a\%p

a,2a,3a,...,(p1)a%p的余数必定各不相同,分别为

1

,

2

,

3

,

.

.

.

,

(

p

1

)

1,2,3,…,(p-1)

1,2,3,...,(p1),(

a

a

a不为

p

p

p的倍数)
全部相乘,得

(

p

1

)

!

a

p

1

(

p

1

)

!

(

m

o

d

  

p

)

(p-1)!a^{p-1}\equiv(p-1)!(mod\space\space p)

(p1)!ap1(p1)!(mod  p)

a

p

1

1

(

m

o

d

  

p

)

a^{p-1}\equiv1(mod\space \space p)

ap11(mod  p)
广义欧拉定理

a

φ

(

p

)

1

(

m

o

d

  

p

)

g

c

d

(

a

,

p

)

=

1

a^{\varphi(p)}\equiv1(mod\space \space p)\qquad gcd(a,p)=1

aφ(p)1(mod  p)gcd(a,p)=1
证明:

1

(

p

1

)

1-(p-1)

1(p1)中与

p

p

p互质的数为

x

1

,

x

2

,

.

.

.

,

x

n

x_1,x_2,…,x_n

x1,x2,...,xn,那么

x

1

a

,

x

2

a

,

.

.

.

,

x

n

a

%

p

x_1a,x_2a,…,x_na\%p

x1a,x2a,...,xna%p的余数也各不相同,且为

x

1

,

x

2

,

.

.

.

,

x

n

x_1,x_2,…,x_n

x1,x2,...,xn,证明方式与上面同理。

应用:在快速幂中指数过大,如求

a

b

c

%

p

(

p

)

a^{b^c}\%p\qquad(p为质数)

abc%p(p)

(

a

,

b

,

c

<

=

1

0

12

)

(a,b,c<=10^{12})

(a,b,c<=1012)就可以

long long quickpow(long long a,long long b,long long Mod)
int main(){
    int a,b,c,p;
    scanf("%lld%lld%lld%lld",&a,&b,&c,&p);
    printf("%lld\n",quickpow(a,quickpow(b,c,p-1),p);
}

3.

I

d

=

φ

I

3.Id=\varphi*I

3.Id=φI

4.

φ

=

μ

I

d

4.\varphi=\mu*Id

4.φ=μId

3

,

4

3,4

3,4的证明方法见Dirichlet卷积初步

5.

n

i

1

[

g

c

d

(

i

,

n

)

=

1

]

×

i

=

n

×

φ

(

n

)

+

[

n

=

1

]

2

5.\sum_{n}^{i-1}[gcd(i,n)=1]\times i=\frac{n\times\varphi(n)+[n=1]}{2}

5.ni1[gcd(i,n)=1]×i=2n×φ(n)+[n=1]

证明:当

n

=

1

n=1

n=1时,易证等式成立

n

1

n\not =1

n=1时,因为

g

c

d

(

i

,

n

)

=

g

c

d

(

n

i

,

n

)

gcd(i,n)=gcd(n-i,n)

gcd(i,n)=gcd(ni,n),所以所有的

i

i

i必成对出现,一共有

φ

(

n

)

2

\frac{\varphi(n)}{2}对

2φ(n),所以和为

n

×

φ

(

n

)

2

\frac{n\times\varphi(n)}{2}

2n×φ(n)

6.

φ

(

i

j

)

=

φ

(

i

)

φ

(

j

)

g

c

d

(

i

,

j

)

φ

(

g

c

d

(

i

,

j

)

)

6.\varphi(ij)=\frac{\varphi(i)\varphi(j)gcd(i,j)}{\varphi(gcd(i,j))}

6.φ(ij)=φ(gcd(i,j))φ(i)φ(j)gcd(i,j)

证明:由于

φ

\varphi

φ为积性函数,所以我们只需证明满足质数的整数次幂的情况。

i

=

1

j

=

1

i=1或j=1

i=1j=1时显然成立。

i

=

p

s

,

j

=

p

t

i=p^s,j=p^t

i=ps,j=pt,则

φ

(

i

)

φ

(

j

)

g

c

d

(

i

,

j

)

φ

(

g

c

d

(

i

,

j

)

)

\frac{\varphi(i)\varphi(j)gcd(i,j)}{\varphi(gcd(i,j))}

φ(gcd(i,j))φ(i)φ(j)gcd(i,j)

=

(

p

1

)

2

p

s

+

t

+

m

i

n

(

s

,

t

)

2

(

p

1

)

p

m

i

n

(

s

,

t

)

1

=\frac{(p-1)^2p^{s+t+min(s,t)-2}}{(p-1)p^{min(s,t)-1}}

=(p1)pmin(s,t)1(p1)2ps+t+min(s,t)2

=

(

p

1

)

p

s

+

t

1

=(p-1)p^{s+t-1}

=(p1)ps+t1

=

φ

(

p

s

+

t

)

=

φ

(

i

j

)

=\varphi(p^{s+t})=\varphi(ij)

=φ(ps+t)=φ(ij)

二、莫比乌斯函数

首先,要明白它的定义式:

对于一个数n,

{

d

n

μ

(

d

)

}

=

[

n

=

1

]

\{\sum_{d|n}\mu(d)\}=[n=1]

{dnμ(d)}=[n=1]

n

n

n
不等于

1

1

1
时,

n

n

n
所有因子的莫比乌斯函数值的

0

0

0

易得,

μ

(

1

)

=

1

\mu(1)=1

μ(1)=1,取

n

=

p

k

n=p^k

n=pk

p

p

p为质数,

k

>

1

k>1

k>1),由定义式可得:

μ

(

n

)

=

μ

(

1

)

+

μ

(

p

)

+

μ

(

p

2

)

+

.

.

.

+

μ

(

p

k

1

)

=

0

\mu(n)=\mu(1)+\mu(p)+\mu(p^2)+…+\mu(p^{k-1})=0

μ(n)=μ(1)+μ(p)+μ(p2)+...+μ(pk1)=0

k

=

2

k=2

k=2,得

μ

(

p

)

=

1

\mu(p)=-1

μ(p)=1

然后可以进一步推出对于

k

2

μ

(

p

k

)

=

0

∀k≥2,\mu(p^k)=0

k2μ(pk)=0

然后我们就得到了一个结论:当

n

n

n的一个质因子的次数大于等于

2

2

2时,

μ

(

n

)

=

0

\mu(n)=0

μ(n)=0

由于

μ

\mu

μ函数为积性函数,所以

μ

(

i

j

)

=

μ

(

i

)

μ

(

j

)

\mu(ij)=\mu(i)\mu(j)

μ(ij)=μ(i)μ(j)

n

n

n不存在一个质因子的次数大于

2

2

2时,我们设

n

=

i

=

1

t

p

i

n=\prod_{i=1}^{t}p_i

n=i=1tpi

μ

(

n

)

=

μ

(

p

1

)

×

μ

(

p

2

)

×

.

.

.

×

μ

(

p

t

)

=

(

1

)

t

\therefore \qquad \mu(n)=\mu(p_1)\times\mu(p_2)\times…\times\mu(p_t)=(-1)^t

μ(n)=μ(p1)×μ(p2)×...×μ(pt)=(1)t
综上所述

μ

(

n

)

=

{

0

n

(

1

)

t

o

t

h

e

r

w

i

s

e

\mu(n)=\left\{ \begin{aligned} 0\qquad n有平方因子 \\ (-1)^t \qquad otherwise\\ \end{aligned} \right.

μ(n)={0n(1)totherwise

void sieve(){  //莫比乌斯函数筛法
	mu[1]=1;
	for(int i=2;i<=n;i++){
		if(!flag[i])  prime[++cnt]=i,mu[i]=-1;
		for(int j=1;j<=cnt&&i*prime[j]<=n;j++){
			flag[i*prime[j]]=1;
			if(i%prime[j]==0)  break;
			mu[i*prime[j]]-=mu[i];
		}
	}
}

三、约数个数函数

一个重要的性质

d

(

i

j

)

=

k

i

l

j

[

g

c

d

(

k

,

l

)

=

1

]

d(ij)=\sum_{k|i}\sum_{l|j}[gcd(k,l)=1]

d(ij)=kilj[gcd(k,l)=1]
证明:

q

q

q

i

j

ij

ij的一个因子(可以是质因子),设

q

=

s

×

p

t

q=s\times p^t

q=s×pt

p

p

p为质数)

i

=

i

×

p

a

,

j

=

j

×

p

b

i=i’\times p^a,j=j’\times p^b

i=i×pa,j=j×pb,由于

q

q

q

i

j

ij

ij的一个因子,必有

t

a

+

b

t≤a+b

ta+b

如果

t

a

t≤a

ta,就取

k

=

m

×

p

t

k=m\times p^t

k=m×pt以保证

g

c

d

(

k

,

l

)

=

1

gcd(k,l)=1

gcd(k,l)=1

否则取

k

k

k满足

g

c

d

(

k

,

p

)

=

1

gcd(k,p)=1

gcd(k,p)=1

t

=

n

×

p

t

a

t=n\times p^{t-a}

t=n×pta,此时

g

c

d

(

k

,

l

)

=

1

gcd(k,l)=1

gcd(k,l)=1

这样可以保证对于

i

j

ij

ij的每一个约数都存在唯一一种分解方案,该性质成立。


版权声明:本文为wljoi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/wljoi/article/details/100024850