版权声明:未经本人允许,擅自转载,一旦发现将严肃处理,情节严重者,将追究法律责任!
序:为什么要进行回顾?因为这几天测试发现数论还不是太熟悉,
于是今天看了看2016国家集训队论文对数论又有了新的认识,
预计在明天或者后天给出曾经未完成的总结,以及对2016国家集训队论文的些许理解;
P1:筛法:
线性筛:这个东西想必大家都非常熟悉,但是对于它为什么能做到O(n)的
【因为每个数只会被自己最小的质因子筛出去】或许大家不一定了解
于是在此给出证明:
1.设两个数a,b【a<b且a,b为质数,且a*m==b*m'==n】
2.a<b,m>m' 于是有两种情况:
(1)当目前为止质数被筛出只有a,于是i枚举到m筛出n【被a筛出】
(2)当目前为止质数被筛出a,b,又因为a*m==b*m'且a,b互质,
于是只有a为m'的约数,于是当还没枚举到b的时候 因为m % a==0就退出了;
3.由 2 可得n只会被最小的质因子筛去,于是可知道此算法为O(n)的
杜教筛:这个由于要用到一些积性函数的东西,于是将此部分延后解释;
------------------------------------------------------------------------------------------------
作者写到现在才发现我写这些东西有什么用?本来就有很详细的论文,
况且给出结论不加以证明不是我的风格,于是在某些定义证明部分将贴
集训队论文,在一些,不易理解地方,作者将给出较为口语化的解释
所以本文重点在习题的解答
-----------------------------------------------------------------------------------------------
P2:积性函数:
2.3:计算1--n的积性函数,我们可以利用前文所讲的线性筛,利用积性函数的积性算出:
例如莫比乌斯函数:
---------------------------------------
mu[1]=1;
for (int i=2; i<=N; i++)
{
if (!vis[i]){tot++; pri[tot]=i; mu[i]=-1;}
for (int j=1; j<=tot&&pri[j]*i<=N; j++)
{
vis[i*pri[j]]=1;
if (i%pri[j]==0) {mu[i*pri[j]]=0; break;}
mu[i*pri[j]]=mu[i]*mu[pri[j]];
}
}
---------------------------------------
P4:莫比乌斯反演:
Pn:一些题目题解:待更
参考文献:贾志鹏线性筛法.pdf
国家集训队2016论文集.pdf
ZYF数论十题.pdf
参考博客:hzwer