一、同余:
1。若整数a和整数b除以正整数m的余数相等,则称a,b模m同余,记作a≡b(mod m)。
2。费马小定理:若p是质数,则对于任意整数a,有ap ≡a(mod p)。
3。欧拉定理:若正整数a,n互质,则 aφ(n)≡1(mod n) ,其中φ(n)是欧拉函数。
4。若正整数a,n互质,则对于任意正整数b,有ab≡ab mod φ(n)(mod n)。
很多问题要求我们对一个质数p取模后输出。面对乘方算式,我们可以先把 底数对p取模(底数不是p的倍数)、指数对φ(p)取模,再计算乘方。
若a,n不一定互质且b>φ(n)时,有ab≡ab mod φ(n) + φ(n) (mod n)。
这意味着即使底数与模数不互质,我们也有办法把指数的规模缩小到容易计算的范围。
5。若正整数a,n互质,则满足ax≡1(mod n)的最小正整数x0是φ(n)的约数。
二、扩展欧几里得算法:
1。对于任意整数a,b,存在一对整数x,y,满足 ax+by=gcd(a,b)。
求解ax+by=gcd(a,b)的一组特解x0,y0,并返回gcd(a,b)。
int exgcd(int a,int b,int &x,int &y)
{
if(b==0)
{
x=1;
y=0;
return a;
}
int d=exgcd(b,a%b,x,y);
int z=x;
x=y;
y=z-y*(a/b);
return d;
}
int d=exgcd(a,b,x0,y0);
2。对于一般的方程ax+by=c,它有解当且仅当gcd(a,b&#x