利用线性筛法解决的数学函数或问题小汇(省选复习)
来源:互联网 发布:tensorflow checkpoint 编辑:程序博客网 时间:2024/04/29 10:31
准备省选的过程中发现数学这一块的结论是学的快忘得也快,而因此就有了总结出一篇博客来深化记忆同时也方便
大家学习,我会在接着的几个博客中重点梳理数学相关的知识内容,有什么疏漏或不足之处还望指出。
①线性筛法求素数(略)
void init(){for(int i=2;i<=n;i++){if(!vis[i])prime[++cnt]=i;for(int j=1;j<=cnt;j++){long long tmp=i*prime[j];if(tmp>=N)break;vis[tmp]=1;if(i%prime[j]==0)break;}}}
②线性筛法求莫比乌斯函数:
基本方法是这样的:
若x为素数 则mu[x]=-1
若x由prime[j]*i筛到且i%prime[j]!=0 则mu[x]=-mu[i]
若x由prime[j]*i筛到且i%prime[j]==0 则mu[x]=0
void init(){for(int i=2;i<=n;i++){if(!vis[i])mu[i]=-1,prime[++cnt]=i;for(int j=1;j<=cnt;j++){long long tmp=i*prime[j];if(tmp>=N)break;vis[tmp]=1;if(i%prime[j]==0)break;mu[tmp]=-mu[i];}}}
③线性筛法求欧拉函数:
若x为素数 则mu[x]=x-1
若x由prime[j]*i筛到且i%prime[j]!=0 则mu[x]=mu[i]*(prime[j]-1)
若x由prime[j]*i筛到且i%prime[j]==0 则mu[x]=mu[i]*prime[j]
void init(){for(int i=2;i<=n;i++){if(!vis[i])phi[i]=i-1,prime[++cnt]=i;for(int j=1;j<=cnt;j++){long long tmp=i*prime[j];if(tmp>=N)break;vis[tmp]=1;if(i%prime[j]==0){phi[tmp]=phi[i]*j;break;}phi[tmp]=phi[i]*(j-1);}}}④线性筛法求约数和、约数个数(代码略)
1 0
- 利用线性筛法解决的数学函数或问题小汇(省选复习)
- 利用积性函数实现的各种线性筛法
- 利用python来解决 小鸡,公鸡,母鸡的数学问题
- 省选模版复习——线性筛法
- 利用回溯法解决1-9之间添加"+"或"-"或""使得运算结果为100的问题
- 算法复习--------------利用堆栈解决电路布线问题
- 算法复习-----------利用列队解决电路布线问题
- 博弈知识小汇(省选复习)
- 【C++复习】易错的小问题
- 线性筛法,留着复习
- 算法研究:利用Python解决数学计数原理问题
- 数学函数的使用问题
- 利用异或的特性解决,找出重复数的问题
- 线性筛法 与 线性求欧拉函数 的计算模板
- 利用隐藏神经元解决异或问题的小型示例程序
- bzoj4017 小Q的无敌异或 数学
- BFPRT算法解决求前k(大或小)数的问题
- 几个数学问题的解决及解释
- android:nvalidate()与postInvalidate()和postInvalidateOnAnimation()
- node.js——麻将算法(一)基本判胡
- Bootstrap 媒体对象
- 确定水晶报表资源文件的路径
- ButterKnife使用详解
- 利用线性筛法解决的数学函数或问题小汇(省选复习)
- 建自己的博客的第一天,不忘初心!
- vtk qt 编译
- javascript学习(一)
- Matlab数字图像处理基础【4】
- 双端链表<--->环形链表,stl库中 list<int>的使用
- Java容器复习
- js 把字符串转为数组
- 练习