本来这些东西想用一天写完的,结果脱了几天,现在决定整理一下
费马小定理
对于费马小定理,我们知道‘+’、‘-’、‘*’的取模都比较的好处理,但是遇到‘/’的取模就比较繁琐了。
公式:对于gcd(a, b)=1,也就是a,b互质的情况下,若b为素数(质数),则有a^(b-1)=1(mod b)。
特别的,可以推导出:由a^(b-1)=1(mod b)
则有啊a^(b-2)=1/a(mod b),即,a^(-1)=a^(b-2)%b
欧拉函数
欧拉函数:oula(n)表示小于n的且与与n互质的数的个数
oula(n)=n*(1-1/p1)*(1-1/p2)*......*(1-1/pk),其中,pi均为小于n且与n互质的数
那么,就有欧拉的模版了:
ll oula(ll n) //欧拉
{
ll res=n;
for(int i=2; i*i<=n; i++)
{
if(n%i==0)
{
res=res/i*(i-1);
while(n%i==0) n/=i;
}
}
return res;
}