欧拉定理:
设gcd(a,m)=1,必有正整数x,使得a^x=1(mod m),且设满足等式的最小正整数为x0,必满足x0|phi(m).注意m>1.
否则如果gcd(a,m)!=1,则方程a^x=1(mod m)没有解。
phi(m)是m的欧拉函数,值为<=m并且与m互质的数的个数
具体的求法是m*(m的质因子-1)/(m的质因子)(边分解质因数边算即可)
最小的正整数解必然是phi(m)的一个约数,所以我们求出phi(m)后去求它的约数,然后从小到大枚举,第一个满足余数为1的即为解
代码:
LL euler_phi(LL n)//欧拉函数
{
LL ans=n,i;
for(i=2; i*i<=n; i++)
{
if(n%i==0)
{
ans=ans/i*(i-1);
while(n%i==0)n=n/i;
}
}
if(n>1)ans=ans/n*(n-1);
return ans;
}