一、降幂公式
AK≡AK%ϕ(m)+ϕ(m)(mod  m) A^K \equiv A^{K\%\phi(m) + \phi(m)} (\mod m)AK≡AK%ϕ(m)+ϕ(m)(modm)
其中φ(即phi)是欧拉函数其中φ(即phi)是欧拉函数其中φ(即phi)是欧拉函数
二、欧拉函数
- 定义:对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n)φ(n)φ(n) 。
- 性质:
1、φ(1)=1φ(1)=1φ(1)=1
2、φ(p)=p−1φ(p) = p - 1φ(p)=p−1 (对于质数p)
3、欧拉定理:对于互质的正整数a和n,有aφ(n)≡1modna^{φ(n)} \equiv 1 mod naφ(n)≡1modn。
4、欧拉函数是积性函数:若m,n互质,φ(mn)=φ(m)φ(n)(积性函数表达式)。
5、n是质数p的k次幂,有φ(n)=pk−p(k−1)=(p−1)p(k−1)φ(n)=p^k-p^{(k-1)}=(p-1)p^{(k-1)}φ(n)=pk−p(k−1)=(p−1)p(k−1),因为除了p的倍数外,其他数都跟n互质。
6、设p为n的质因数
若(n % p == 0 && (n / p) % p == 0) 则有φ(n)=φ(n / p) * p;
若(n % p == 0 && (p / p) % p != 0) 则有:φ(n) = φ(n / p) * (p - 1)。
三、模板
欧拉函数
法一:
long long euler(long long x) //直接求欧拉函数
{
long long res=1;
for(long long i=2;i*i<=x;++i){
if(x%i==0){
x/=i;
res*=(i-1);
while(x%i==0){
x/=i;
res*=i;
}
}
}
if(x>1) res*=(x-1);
return res;
}
法二:
//求欧拉函数 相当于不断减去
long long phi(long long x)
{
long long res=x;
for(long long i=2;i*i<=x;++i){
if(x%i==0){
res=res-res/i;
while(x%i==0)
x/=i;
}
}
if(x>1)
res=res-res/x;
return res;
}
快速幂
long long qpow(long long a,long long n,long long mod) //快速幂
{
long long ans=1;
while(n){
if(n&1){
ans*=a;
ans%=mod;
}
a=(a*a)%mod;
n>>=1;
}
return ans;
}
本文深入探讨了欧拉函数的定义、性质及其在数学计算中的应用,并提供了两种求欧拉函数的方法。同时,文章讲解了快速幂算法,这是一种高效计算大数幂次方的算法,适用于模运算场景。

677

被折叠的 条评论
为什么被折叠?



