数论相关内容 欧拉函数总结

欧拉函数

互质:(前置知识)
对于 ∀ a , b ∈ N \forall a,b\in N a,bN g c d ( a , b ) = 1 , a , b gcd(a,b)=1,a,b gcd(a,b)=1,a,b互质

定义
我们定义 ϕ ( N ) \phi (N) ϕ(N) [ 1 , N ] [1,N] [1,N] 中与 N N N 互质的个数,称作欧拉函数。
(注意:尽管1既不是质数也不是合数 ,但我们定义 ϕ ( 1 ) = 1 \phi (1)=1 ϕ(1)=1

性质1
x x x 是质数 ,那么 ϕ ( x ) = x − 1 \phi (x)=x-1 ϕ(x)=x1
证明:
除了质数本身的数都与它互质

性质2
∀ n > 1 , [ 1 , n ] \forall n>1,[1,n] n>1,[1,n]中所有与n互质的数的和为 n ∗ ϕ ( n ) / 2 n*\phi(n)/2 nϕ(n)/2
证明:由于 g c d ( n , x ) = g c d ( n , n gcd(n,x)=gcd(n,n gcd(n,x)=gcd(n,n% x ) x) x) (不清楚这个性质的同学可以在我的“同余总结中看详细证明”) 所以我们可以得到: g c d ( n , x ) = g c d ( n , n − x ) gcd(n,x)=gcd(n,n-x) gcd(n,x)=gcd(n,nx)
这说明与 n n n 不互质的数 x , n − x x,n-x x,nx 成对出现 ,而这两个数的平均值为 n / 2 n/2 n/2
因此我们得到 与 n n n 互质的数的平均值也是 n / 2 n/2 n/2 (所有小于 n n n的数的平均值为 n / 2 n/2 n/2)

性质3
欧拉函数是积性函数,也就是对于两个互质的数 a , b a,b a,b ϕ ( a ∗ b ) = ϕ ( a ) ∗ ϕ ( b ) \phi(a*b)=\phi(a)*\phi(b) ϕ(ab)=ϕ(a)ϕ(b)
(我没有特别好的严谨推导证明,有想法的同学可以联系我研讨)

性质4
若一个数 x = p c i x=p^{c_i} x=pci p p p为质数),那么有 ϕ ( x ) = ( p c − p c − 1 ) \phi(x)=(p^c-p^{c-1}) ϕ(x)=(pcpc1)
证明:除了 p p p 的倍数与 x x x 不互质以外,其他的数都与 x x x 互质 p p p 的倍数的个数为 p c p = p c − 1 \frac{p^c}{p}=p^{c-1} ppc=pc1
证得 ϕ ( x ) = ( p c − p c − 1 ) \phi(x)=(p^c-p^{c-1}) ϕ(x)=(pcpc1)

性质5
用算数的基本定理将 N N N 分解为 N = p 1 c 1 p 2 c 2 . . . p n c n N=p_1^{c_1}p_2^{c_2}...p_n^{c_n} N=p1c1p2c2...pncn

那么 ϕ ( N ) = N ∗ ( ∏ 质 数 p ∣ N ( 1 − 1 p ) ) \phi(N)=N*(\prod\limits_{质数p|N}(1-\frac{1}{p})) ϕ(N)=N(pN(1p1))

这里给出两种证明方法
证法1
p , q p,q p,q N N N 的质因子,因为该质因子的倍数与 N N N不互质 所以我们要去掉这 ( N p ) (\frac{N}{p}) (pN) ( N q ) (\frac{N}{q}) (qN)个数,又因为,其中 p ∗ q p*q pq的倍数的数被删去了两次 那么我们需要加回 ( N p ∗ q ) (\frac{N}{p*q}) (pqN)

所以我们得到 N − N p − N q + N p ∗ q = N ( 1 − 1 p − 1 q + 1 p ∗ q ) = N ( 1 − 1 p ) ( 1 − 1 q ) N-\frac{N}{p}-\frac{N}{q}+\frac{N}{p*q}=N(1-\frac{1}{p}-\frac{1}{q}+\frac{1}{p*q})=N(1-\frac{1}{p})(1-\frac{1}{q}) NpNqN+pqN=N(1p1q1+pq1)=N(1p1)(1q1)

将两个质因子推开到多个质因子,用数学归纳法,证毕。

证法2
性质3得到
ϕ ( x ) = ∏ i = 1 n ϕ ( p i c i ) \phi(x)=\prod\limits^{n}_{i=1}\phi(p^{c^i}_i) ϕ(x)=i=1nϕ(pici)

性质4得到

ϕ ( x ) = ∏ i = 1 n ( p c i − p c i − 1 ) \phi(x)=\prod\limits^{n}_{i=1}(p^{c_i}-p^{{c_i}-1}) ϕ(x)=i=1n(pcipci1)
= ∏ i = 1 n p c i ( 1 − 1 p i ) =\prod\limits^{n}_{i=1}p^{c_i}(1-\frac{1}{p_i}) =i=1npci(1pi1)
= x ∗ ∏ i = 1 n ( 1 − 1 p i ) =x*\prod\limits^{n}_{i=1}(1-\frac{1}{p_i}) =xi=1n(1pi1)
证毕。

性质6
p p p x x x的约数( p p p是质数),那么有 ϕ ( x ∗ p ) = ϕ ( x ) ∗ p \phi(x*p)=\phi(x)*p ϕ(xp)=ϕ(x)p
证明:
考虑一下我们证明的性质5
p p p 乘上之后 ∏ i = 1 n ( 1 − 1 p i ) \prod\limits^{n}_{i=1}(1-\frac{1}{p_i}) i=1n(1pi1)不变 ,而前面的 x x x会变为 x ∗ p x*p xp

性质7
p p p 不是 x x x 的约数( p p p是质数)
ϕ ( x ∗ p ) = ϕ ( x ) ∗ ( p − 1 ) \phi(x*p)=\phi(x)*(p-1) ϕ(xp)=ϕ(x)(p1)
因为 p , x p,x p,x互质 ϕ ( p ) = p − 1 \phi(p)=p-1 ϕ(p)=p1性质3欧拉函数是积性函数可知 ϕ ( x ∗ p ) = ϕ ( p ) ∗ ϕ ( x ) = ϕ ( x ) ∗ ( p − 1 ) \phi(x*p)=\phi(p)*\phi(x)=\phi(x)*(p-1) ϕ(xp)=ϕ(p)ϕ(x)=ϕ(x)(p1)

求解单个欧拉函数
用程序实现性质5求解过程即可.

void eular(long long n){
	ou=n;
	for(long long i=2;i*i<=n;i++){
		if(n%i==0){
			ou=ou/i*(i-1);
			while(n%i==0) n/=i;
		}
	}
	if(n!=1) ou=ou/(n)*(n-1);
}

求解一系列欧拉函数代码
p p p 不是 i i i的一个约数 性质7 ϕ ( x ∗ p ) = ϕ ( x ) ∗ ( p − 1 ) \phi(x*p)=\phi(x)*(p-1) ϕ(xp)=ϕ(x)(p1)
p p p i i i 的一个约数 性质6 ϕ ( x ∗ p ) = ϕ ( x ) ∗ p \phi(x*p)=\phi(x)*p ϕ(xp)=ϕ(x)p

for(int i=2;i<=n;i++){
// cnt是质数的个数 p是质数数组 v记录最小质因数
//phi 记录欧拉函数值
if(!v[i]){
		cnt++; v[i]=i; p[cnt]=i phi[i]=i-1;
	}
	for(int j=1;j<=cnt;j++){
		if(p[j]*i>n) break;
		v[i*p[j]]=p[j];
		if(i%p[j]) phi[i*p[j]]*(p[j]-1);
		else{
			phi[i*p[j]]=phi[i]*p[j];
			break;
		}
	}
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值