素数线性筛
int Prime()
{
int index = 1;
for(int i = 2; i <= n; i++)
{
//如果未标记则得到一个素数
if(f[i] == 0){
prime[index++] = i;
}
//标记目前得到的素数的i倍为非素数
for(int j = 1; j < index && prime[j] * i <= n; j++)
{
f[i * prime[j]] = 1;
if(i % prime[j] == 0){
break;
}
}
}
欧拉筛
快速幂
int ans=1;
while(b!=0)
{
if(b&1)ans*=a;
a*=a;
b/=2;
}
算术基本定理
一个大于1的正整数分解质因数的形式是:M = x^a * y^b * z^c * …
则M的约数个数 = (a+1)(b+1)(c+1)…
逆元
a与x的积mod p等于1,
x为a^p-2。