一、整除 约数 倍数
a|b表示b除以a余0,也就是a能整除b。称a是b的约数,b是a的倍数。
若a|b, a|c, 则a|(b+c)
若a|b, 那么对所有整数c, a|bc
若a|b, b|c, 则a|c
二、素数 合数
约数只有1和本身的数是素数,除此以外还有其他约数的数是合数。1既不是素数也不是合数。
三、算数基本定理
每个正整数都可以惟一地表示成素数的乘积。即有唯一的分解质因数方案:
其中x的约数个数可以表示为:
求N的约数个数是O(N−−√)的
想一想为什么?
四、最大公约数gcd( )和最小公倍数lcm[ ]
若
则
且
gcd(a,b)=gcd(a−b,b)
gcd(a,b)=gcd(a%b,a)
lcm(a,b)=a∗b/gcd(a,b)
想一想为什么?
有时简化书写将gcd(a,b)记为(a,b),lcm(a,b)为[a,b]
五、欧几里德算法(辗转相除)
原理:gcd(a,b)=gcd(b,a%b)
递归下去,直到b=0,此时a就是最大公约数
代码:
int gcd(int a,int b){
if (b==0) return a;
else return gcd(b,a%b);
}
int gcd(int x,int y){
int r=y%x;
while (r!=0){
y=x;
x=r;
r=y%x;
}
return x;
}
六、∑和∏
∑连加
∏连乘
都满足交换律和分配律
七、其他符号约定&&高斯函数
[条件]=0(如果条件为假)或1(如果条件为真)
逻辑短路:
高斯函数:
[x]或⌈x⌉表示不超过x的最大的整数(向上取整)
⌊x⌋表示不小于x的最小的整数(向下取整)
特别注意:计算机中的取整为向0取整!
八、欧拉函数
ϕ(n)表示小于n的数中中与n互质的数的个数,特殊地,ϕ(1)=1
性质:
(1)
证明:p的约数只有1和p,显然成立
(2)
证明:ϕ(pk)=pk−pk−1=(p−1)pk−1
即1…pk中只有pkp=pk−1个数和pk不互质,其余的数都和pk互质
那么我们可以将这个式子推广一下,即
可以发现每一个pkii都是互质的,那么利用ϕ是积性函数和自然数的唯一分解定理可以证明。
(3)
给出证明:
(4)
(5)
用于n√求ϕ
证明:
我们已经知道ϕ(n)=∏ipki−1i(pi−1),n=∏ipkii,经过简单的变形就可以得到
九、莫比乌斯函数
莫比乌斯函数的一个性质:
同样不要问我证明。。。
十、同余
a,b对p取模得到相同余数,称a,b在模p意义下同余,记为a≡b(modp)
性质:
同余关系的自反、对称、传递:
a≡a(modp)
若a≡b(modp),则b≡a(modp)
若a≡b(modp),b≡c(modp),则a≡c(modp)
同余关系的加减:
若a≡b(modp),c≡d(modp),则a±c≡b±d(modp)
同余关系相乘:
若a≡b(modp),c≡d(modp),则ac≡bd(modp)
想一想为什么?
十一、欧拉定理和费马小定理
欧拉定理:若a,p为正整数且(a,p)=1,则满足:
费马小定理:若a为正整数,p为质数,且(a,p)=1,则满足:
证明:非常简单,前面我们已经知道当p为质数时ϕ(p)=p−1,将此结论代入欧拉定理即可证明。
十二、逆元
逆元:如果 ab≡1(modp),那么我们称在模p意义下a,b互为逆元。
a有逆元的充要条件是(a,p)=1。(想一想为什么?)
所以,当p为质数时,ap的逆元为ap−2(由费马小定理可知)
逆元的作用:在模意义下进行除法。乘a的逆元等同于除以a。