1.最大公约数 gcd:
gcd(a,b)=gcd(b,a%b) - a%b=0时停止递归
2.最小公倍数 lcm:
a*b/gcd(a,b)
gcd满足左右同除:gcd(a,b)=p<=>gcd(a/p,b/p)=1;
3.模法
(a+b)%c=(a%c+b%c)%c
(a-b)%c=(a%c-b%c+c)%c
(ab)%c=(a%c)(b%c)%c
4.逆元
若(b*x)%c=1,
则(a/b)%c=(a*x)%c
? 费马小定理:(a^p)%p=a;
因此推出,(a/b)%c一式中,a^(c-2)是a的逆元
即(a/b)%c=a^(c-1)%c
5.欧拉函数
φ(N)定义为小于等于N且与N互质的正整数的个数。
公式:φ(N)=N*(p1-1)(p2-1)···(pn-1)/p1*p2····*pn
6.快速幂
ll fast_pow(ll a,ll b){
ll ans=1;
for(;y;y>>=1,x=((x%k)*(x%k))%k)
if(y&1) ans=((x%k)*(ans%k))%k;
return ans;
}
•一 如何判断一定范围(比如1~10000)里有多少个素数?
·欧拉筛法
二 如何判断一个很大的数(比如10000000007)是不是素数?
·从2遍历到根号下N