欧拉定理与扩展欧拉定理

欧拉函数

欧拉函数的求法等请看这里,本篇只讲述推论

本文大部分来自知乎Pecco,供自己复习使用

1、若 p p p是质数则 φ ( p n ) = p n − 1 ( p − 1 ) \varphi (p^n)=p^{n-1}(p-1) φ(pn)=pn1(p1)

不大于 p n p^{n} pn正整数中,只有 p 、 2 p 、 3 p 、 . . . 、 p ∗ p n − 1 p、2p、3p、...、p*p^{n-1} p2p3p...ppn1总共 p n − 1 p^{n-1} pn1个所以 φ ( p n ) = p n − p n − 1 = p n − 1 ( p − 1 ) \varphi (p^n)=p^n-p^{n-1}=p^{n-1}(p-1) φ(pn)=pnpn1=pn1(p1)

2、若 a ∣ x a\mid x ax,则 φ ( a x ) = a φ ( x ) \varphi(ax)=a\varphi(x) φ(ax)=aφ(x)

因为 a a a x x x的约数,所以 a a a所有质因数都被 x x x包含,根据欧拉函数的定义易得结论 φ ( a x ) = a φ ( x ) \varphi(ax)=a\varphi(x) φ(ax)=aφ(x)

3、若 a 、 b a、b ab互质,则 φ ( a b ) = φ ( a ) ∗ φ ( b ) \varphi(ab)=\varphi(a)*\varphi(b) φ(ab)=φ(a)φ(b)

因为 g c d ( a , b ) = 1 gcd(a,b)=1 gcd(a,b)=1,所以 a a a b b b所有质因数都不相同,根据欧拉函数定义易得 φ ( a x ) = a φ ( x ) \varphi(ax)=a\varphi(x) φ(ax)=aφ(x),且符合这种性质的数论函数被称为积性函数

欧拉函数可以单个求,也可以使用埃氏筛法、和线性筛求,上边链接里有,这里不说了

欧拉定理

a a a m m m互质,则 a φ ( m ) ≡ 1 ( m o d   m ) a^{\varphi(m)}\equiv 1(mod\ m) aφ(m)1(mod m)

m m m是质数时,欧拉定理退化成费马小定理 a m − 1 ≡ 1 ( m o d   m ) a^{m-1}\equiv 1(mod\ m) am11(mod m)

重要推论:当 a a a m m m互质时, a b ≡ a b   m o d   φ ( m )   ( m o d   m ) a^b\equiv a^{b\ mod\ \varphi(m)}\ (mod\ m) abab mod φ(m) (mod m)

因为 a b = a φ ( m ) ⌊ b / φ ( m ) ⌋ + b   m o d   φ ( m ) ≡ 1 ∗ a b   m o d   φ ( m ) a^b=a^{\varphi(m)\left \lfloor b/\varphi(m) \right \rfloor+b\ mod\ \varphi(m)}\equiv 1*a^{b\ mod\ \varphi(m)} ab=aφ(m)b/φ(m)+b mod φ(m)1ab mod φ(m)


那么 a a a m m m不互质时我们怎么办呢?

这时我们引入扩展欧拉定理

b ≥ φ ( m ) b \geq\varphi(m) bφ(m),则 a b ≡ a b   m o d   φ ( m ) + φ ( m )   ( m o d   m ) a^b\equiv a^{b\ mod\ \varphi(m)+\varphi(m)}\ (mod\ m) abab mod φ(m)+φ(m) (mod m)

b < φ ( m ) b<\varphi(m) b<φ(m)时,直接用快速幂计算即可

b ≥ φ ( m ) b \geq\varphi(m) bφ(m)时,分两种情况讨论

1、 a a a m m m互质,

a b ≡ a b   m o d   φ ( m )   ( m o d   m ) ∗ 1 ≡ a b   m o d   φ ( m ) + φ ( m )   ( m o d   m ) a^b\equiv a^{b\ mod\ \varphi(m)}\ (mod\ m)*1\equiv a^{b\ mod\ \varphi(m)+\varphi(m)}\ (mod\ m) abab mod φ(m) (mod m)1ab mod φ(m)+φ(m) (mod m)
显然成立

2、 a a a m m m不互质

我们先把m分解质因数,即 m = p 1 q 1 p 2 q 2 . . . p n q n m={p_{1}}^{q_{1}}{p_{2}}^{q_{2}}...{p_{n}}^{q_{n}} m=p1q1p2q2...pnqn

我们只需要证明对于每个 p i q i {p_{i}}^{q_{i}} piqi都有
a b ≡ a b   m o d   φ ( m ) + φ ( m )   ( m o d   p i q i ) a^b\equiv a^{b\ mod\ \varphi(m)+\varphi(m)}\ (mod\ {p_{i}}^{q_{i}}) abab mod φ(m)+φ(m) (mod piqi)

假设 m 1 、 m 2 m_{1}、m_{2} m1m2互质,且 x ≡ y   ( m o d   m 1 ) , x ≡ y   ( m o d   m 2 ) , 则 x ≡ y   ( m o d   m 1 m 2 ) x\equiv y\ (mod\ m_{1}),x\equiv y\ (mod\ m_{2}),则x\equiv y\ (mod\ m_{1}m_{2}) xy (mod m1)xy (mod m2)xy (mod m1m2)

因为 x − y ∣ m 1 x-y\mid m_1 xym1 x − y ∣ m 2 x-y\mid m_2 xym2,所以两者可以合并

现在开始分类讨论 p i q i {p_{i}}^{q_{i}} piqi

1、 g c d ( a , p i q i ) = 1 gcd(a, {p_{i}}^{q_{i}})=1 gcd(a,piqi)=1

上面已经证明,根据欧拉定理必然有
a b = a φ ( m ) ⌊ b / φ ( m ) ⌋ + b   m o d   φ ( m ) ≡ a b   m o d   φ ( m ) + φ ( m )   ( m o d   p i q i ) a^b= a^{\varphi(m)\left \lfloor b/\varphi(m) \right \rfloor+b\ mod\ \varphi(m)}\equiv a^{b\ mod\ \varphi(m)+\varphi(m)}\ (mod\ {p_{i}}^{q_{i}}) ab=aφ(m)b/φ(m)+b mod φ(m)ab mod φ(m)+φ(m) (mod piqi)

因为欧拉函数是积性函数,所以 φ ( m ) ⌊ b / φ ( m ) ⌋ \varphi(m)\left \lfloor b/\varphi(m) \right \rfloor φ(m)b/φ(m)必然是 φ ( p i q i ) \varphi({p_{i}}^{q_{i}}) φ(piqi)的倍数

2、 g c d ( a , p i q i ) ≠ 1 gcd(a, {p_{i}}^{q_{i}})\neq 1 gcd(a,piqi)=1

因为 p i p_i pi是一个质数,所以 a a a必然是 p i p_i pi的倍数,设 a = n p i a=np_i a=npi(以下 p i p_i pi p p p表示)

由欧拉定理可知

φ ( p i q i ) = p i q i − 1 ( p i − 1 ) \varphi ({p_{i}}^{q_{i}})={p_{i}}^{q_{i}-1}(p_i-1) φ(piqi)=piqi1(pi1)易知 φ ( p i q i ) ≥ q i \varphi ({p_{i}}^{q_{i}})\geq q_i φ(piqi)qi

粗略证明:
∵ p i 是 一 个 质 数 \because p_i是一个质数 pi
∴ p i ≥ 2 , p i − 1 > 0 \therefore p_i\geq 2,p_{i}-1> 0 pi2pi1>0

已 知 q i ≥ 1 已知q_i\geq1 qi1(都是质因数的幂了,这不废话吗 )

现 在 问 题 已 经 转 化 成 了 证 明 a x − 1 ≥ x ( x ≥ 1 ) 现在问题已经转化成了证明a^{x-1}\geq x(x\geq1) ax1x(x1)

动 手 画 一 下 函 数 就 知 道 了 动手画一下函数就知道了

综 上 所 述 , φ ( p i q i ) ≥ q i 综上所述,\varphi ({p_{i}}^{q_{i}})\geq q_i φ(piqi)qi

b ≥ φ ( m ) ≥ φ ( p i q i ) ≥ q i b\geq \varphi(m) \geq \varphi ({p_{i}}^{q_{i}}) \geq q_i bφ(m)φ(piqi)qi

所以 p i q i {p_{i}}^{q_{i}} piqi既是 a b   m o d   φ ( m ) + φ ( m ) a^{b\ mod\ \varphi(m)+\varphi(m)} ab mod φ(m)+φ(m)的因数,又是 a b a^b ab的因数

所以 a b ≡ a b   m o d   φ ( m ) + φ ( m ) ≡ 0   ( m o d   p i q i ) a^b\equiv a^{b\ mod\ \varphi(m)+\varphi(m)}\equiv0\ (mod\ {p_{i}}^{q_{i}}) abab mod φ(m)+φ(m)0 (mod piqi)

综上所述: a b ≡ a b   m o d   φ ( m ) + φ ( m )   ( m o d   m )   ( b ≥ φ ( m ) ) a^b\equiv a^{b\ mod\ \varphi(m)+\varphi(m)}\ (mod\ m)\ (b\geq \varphi(m)) abab mod φ(m)+φ(m) (mod m) (bφ(m))

P5091 【模板】扩展欧拉定理

具体代码如下

#include<bits/stdc++.h>

using namespace std;

typedef long long LL;

LL qmi(LL a, LL b, LL p)
{
	LL res = 1;
	while(b)
	{
		if(b & 1) res = res * a % p;
		a = a * a % p;
		b >>= 1;
	}
	return res;
}

int main()
{
	LL a, m;
	cin >> a >> m;
	
	LL phi = m, temp = m; 
	
	for(LL i = 2; i * i <= temp; ++ i)
		if(temp % i == 0)
		{
			phi = phi / i * (i - 1);
			while(temp % i == 0) temp /= i;
		}
	
	if(temp > 1)
	{
		phi = phi / temp * (temp - 1);	
	}	
	
	LL b = 0;
	char c;
	bool flag = false;
	while(!isdigit(c = getchar()));
	for(; isdigit(c); c = getchar())
	{
		b = b * 10 + (c - '0');
		if(b >= phi)
		{
			flag = true;
			b %= phi;
		}
	}
	
	if(flag) b += phi;
	LL ans = qmi(a, b, m);
	
	cout << ans << endl;
	
	return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值