约数
GCD,英文缩写,意思是最大公约数
LCM,英文缩写,意思是最小公倍数
欧几里得定理告诉我们:
gcd(a,b)=gcd(a-b,b)=gcd(b,a%b),证明略过
时间复杂度为O(log n)
LCM和GCD之间还有一个公式:
LCM(a,b)×GCD(a,b)=a×b
例题1
例题2
例题3
进制转换
给定一个n位a进制数化为b进制数,最终为m位
将给定a进制的数从高位向低位进行扫描,每次将当前结果乘以a,并且加上当前为的系数,然后考虑进位,复杂度为O(nm) ,如果a,b比较小可以通过压位优化
同余
如果给定正整数m,有正整数a,b满足a-b=km,并且k是一个整数那么叫做a,b模m同余,用a≡b(mod m)表示,比如100-60除以8正好可可以除尽,那么就说100≡60(mod 8`)
那么这不就是取余运算吗,是的,他就是一个取模运算
模m意义下,整数集只有[0,m)的m个整数,其他整数都应该加上或者减去若干个m调整到这个区间(这句话有点类似于循环队列的意义)
对于一个负数的话,我们注意,需要注意其表示为a+b=km,而和之前的不一样了
有一个小细节:a%b=a-a/b×b
不难证明,模意义下的加减乘一帮意义是一样,也就是说性质是一样的,但是唯独除法不太一样
考虑在一般意义下的除法,a/b等价于a×b-1,然而b-1满足b×b-1所以我们只需要运算b-1≡1(mod m),不就可以实现模m意义下的除法了
逆元
所以我们需要引入逆元的概念
逆元其实就是倒数,那为什么要求一个数的倒数呢,比如a/b这个时候b的值特别的大,就是导致精度不够用,所以我们要将将a/b换成ac,其中c-1=b
如果c是b的逆元,则有b×c≡1(mod m)
推论:(a/b)mod m=ac(mod m)
费马小定理
a是不能被质数p整除的正整数,也就是a和p互质那么ap-1≡1(mod p)
这个公式非常的重要,因为我们根据这个式