ACM周训练总结(十一)
本周继续学习了数论的相关知识。
一、欧几里德定理(辗转相除法)
定理:gcd(a, b) = gcd(b, a % b)。
证明:a = kb + r = kb + a%b,则a % b = a - kb。令d为a和b的公约数,则d|a且d|b 根据整除的组合性原则,有d|(a-kb),即d|(a%b)。
说明:如果d是a和b的公约数,那么d也一定是b和a%b的公约数,即两者的公约数是一样的,所以最大公约数也必定相等。
源代码:
int gcd(int a, int b)
{ return b ? gcd(b, a%b) : a; }
二、同余
定义: 设m是大于1的正整数,a、b是整数,如果m|(a-b),则称a与b关于模m同余,记作a≡b(mod m)。显然有如下事实:
1、若a≡0(mod m),则m|a;
2、a≡b(mod m)等价于a与b分别用m去除,余数相同。
性质:
1.反身性:a≡a (mod m);
2.对称性:若a≡b(mod m),则b≡a (mod m);
3.传递性:若a≡b(mod m),b≡c(mod m),则a≡c(mod m);
4.同余式相加:若a≡b(mod m),c≡d(mod m),则a c≡b d(mod m);
5.同余式相乘:若a≡b(mod m),c≡d(mod m),则ac≡bd(mod m)。
6.线性运算:如果a ≡ b (mod m),c ≡ d (mod m),那么
(1)a ± c ≡ b ± d (mod m);
(2)a * c ≡ b * d (mod m)。
补充:两个整数a、b,若它们除以整数m所得的余数相等,则称a与b对模m同余或a同余于b模m。记作a≡b(mod m)
三、费马小定理
定理:如果p是一个质数,而整数a不是p的倍数,则有
a^(p-1)≡1(mod p)。
应用:
1、判断素数,对于大素数的判定,Miller-Rabin 素数判定
2、求解逆元 ,设a模p的逆元为x,则a*x≡1(mod p) ,(a,p)=1;由费马小定理可以知道x=a^(p-2)
3、对于计算ab(modp)ab(modp) 可简化对于素数p,任取跟他互素的数a,有a^(p-1)(mod p)=1, 所以任取b,有ab%p=a(b%(p-1))(%p)从而简化运算。
四、欧拉定理
欧拉定理表达式:aφ(m)≡1(modm)((a,m)=1)
补充:
1、剩余类:设mm为自然数,称为模,所有对mm同余的整数所组成的集合叫做模mm的一个剩余类,如果一个剩余类中的数和模数mm是互素的,那么就称它为模mm的一个互素剩余类。
2、剩余系:在每一个剩余系Kγ(0≤γ≤m−1)Kγ(0≤γ≤m−1)中任取一数aγaγ,我们把a0,a1,…,am−1a0,a1,…,am−1叫做模mm的一个完全剩余系;在每一个互素剩余类Kγ(0≤γ≤m−1,(γ,m)=1)Kγ(0≤γ≤m−1,(γ,m)=1)中任取一数aγaγ,则所有的aγaγ称为模mm的一个互素(简化)剩余系。
定
3、定理:设m为自然数,K,l为任意数且(K,m)=1,则当xx通过mm的完全系时,Kx+lKx+l也通过mm的一个完全系。
定理22:设mm为自然数,K,lK,l为任意数且(K,m)=1(K,m)=1,则当xx通过mm的简化系时,Kx+lmKx+lm也通过mm的一个简化系。
——————————————————————————————
本周做过的一些练习:
Two Arrays And Swaps
Most Unstable Array
Sum of Round Numbers
Orac and Factors