Miller Rabin
直接去看Miller-Rabin笔记吧QwQ
中国剩余定理
中国剩余定理常用来求解同余方程组,形如
的方程组
其中,我们定义
然后令
定义
则最终的解就是
然后CRT拓展的话…
直接看CRT的学习笔记吧
数论分块
求
我们考虑对于 ni下取整 n i 下 取 整 的取值一共有 n−−√ n 而 每一个取值对应的区间又是连续的
所以,我们考虑对于每一种取值x,就可以枚举左边界,则右边界为
n/(n/l)
n
/
(
n
/
l
)
对应的下取整的值就是
n/l
n
/
l
for (int i=1,j;j<=n;i=j+1)
{
j=(n/(n/l));
ans+=(j-i+1)*(n/l);
}
至于这个j的求法
这样解决就可以
一道例题:
bzoj1257
余数求和
给定一个n一个k,求
其中 n,k≤1000000000 n , k ≤ 1000000000
进入函数部分
欧拉函数 ϕ(i) ϕ ( i ) 表示1`i中有几个与 i i 互质的数
考虑如何计算
ϕ(i)
ϕ
(
i
)
是积性函数,可以用线性筛求
void primee(int n)
{
check[1]=1;
for (int i=2;i<=n;i++)
{
if (!check[i]) prime[++tot]=i,phi[i]=i-1;
for (int j=1;j<=tot;j++)
{
if (i*prime[j]>n) break;
check[i*prime[j]]=1;
if (i%prime[j]==0)
{
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
else
{
phi[i*prime[j]]=phi[i]*(prime[j]-1)
}
}
}
}
一个有趣的结论:
欧拉定理:
设n为正整数,a为与n互素的整数则
莫比乌斯函数
所以,当n有平方因子的时候,
μ(n)=0
μ
(
n
)
=
0
因为莫比乌斯函数是积性函数,所以可以线性筛
void primee(int n)
{
check[1]=1;
for (int i=2;i<=n;i++)
{
if (!check[i]) prime[++tot]=i,phi[i]=i-1;
for (int j=1;j<=tot;j++)
{
if (i*prime[j]>n) break;
check[i*prime[j]]=1;
if (i%prime[j]==0)
{
phi[i*prime[j]]=phi[i]*prime[j];
mu[k]=0;
break;
}
else
{
phi[i*prime[j]]=phi[i]*(prime[j]-1);
mu[k]=-mu[i];
}
}
}
}
QwQ中间讲了一些 直接去看这部分的学习笔记吧
好像wei la
还是直接看莫比乌斯反演的学习笔记吧
然后这里引入数论8题:
…..