初学欧拉函数记

显然,本文的一切都是关于它——φ

前提

互质

若有正整数 a,b 且满足 gcd(a,b)=1,则称 a,b 互质。

对于多种数的情况,我们把 gcd(a,b,c)=1 的情况称为 a,b,c 互质。把 gcd(a,b)=gcd(a,c)=gcd(b,c)=1 称为 a,b,c 两两互质。后者明显是一个更强的条件。

积性函数

如果 a,b 互质,有 f(a)×f(b)=f(a×b),则称函数 f 为积性函数。

积性函数性质

易证,若函数 f 为积性函数,且在算法基础定理中 n=i=1mpici,则 f(n)=i=1mf(pici)

正题·欧拉函数

含义

1N 中所有与 N 互质的数的个数称为欧拉函数,记为 φ(N)

性质

欧拉函数性质一:

N 可以表示为 p1c1p2c2p3c3pmcm

对于 N 的质因子 aa 的倍数中在 [1,N] 区间内的有 a,2a,3a,,(N/a)a,共有 N/a 个。

对于另一个 N 的质因子 b,同理,b 的倍数中在 [1,N] 区间内的有 N/b 个。

则在 1 N 中既不是 a 的倍数又不是 b 的倍数的个数按理说有 NNaNb 个,但 b×a 的倍数被减了两次需要加回一次,所以个数是 NNaNb+Nb×a=N×(11a1b+1a×b)=n(11a)(11b)

加以扩深的:φ(N)=N×pN(11p)

所以求欧拉函数的方法一:质因数分解法

int phi(int n){
	int ans=n;
	for(int i=2;i<=sqrt(n);i++){
		if(n%i==0){
			ans=ans/i*(i-1);
			while(n%i==0)n/=i;
		} 
	}
	if(n>1)ans=ans/n*(n-1);
	return ans; 
}

欧拉函数性质二:

n>11n 中与 n 互质的数的和为 n×φ(n)/2

gcd(n,x)=gcd(n,nx)

n 互质的数 x,nx 成对出现,平均值为 n/2

因此,与 n 互质的数的平均值是 n/2,由此推出性质二。

欧拉函数性质三:

a,b 质因数分解,可直接得出 φ(a)×φ(b)=φ(a×b),这就是前提中的积性函数。

欧拉函数性质四:

p 为质数,若 pn,p2n,则φ(n)=φ(n/p)×p

证:由 pn,p2n,则 n,n/p 具有相同质因子,只是 p 的指数不同。

欧拉函数性质五:

p 为质数,若 pn,p2n(不会打不整除,用 ! 来代替一下),则φ(n)=φ(n/p)×(p1)

证:和四的差不多。

欧拉函数性质六:

dnφ(d)=n

这个真不会。。。

证明:

f(n)=dnφ(d)。用乘法分配律展开比较,再利用 φ 是积性函数,得到:若 n,m 互质,则 f(nm)=dnmφ(d)=dnφ(d)×dmφ(d)=f(n)×f(m) 是积性函数,对于单个质因子,f(pm)=dpmφ(d)=φ(1)+φ(p)+φ(p2)++φ(pm) 是一个等比数列求和再加 1,结果为 pm。所以 f(n)=i=1mf(pici)=i=1mpici=n

后续

积性函数还会涉及狄利克雷卷积、莫比乌斯反演等,但这些知识过于高贵,超过了作者脑子的思考范围,所以作者并不打算在这一文章中继续讲。

posted @   All_Unluck_Beginning  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示