浅谈筛法
来源:互联网 发布:平面坐标 经纬度 java 编辑:程序博客网 时间:2024/04/30 03:12
最近做了一道题,是求
于是我想来谈一下筛法。
筛法,顾名思义,就是筛选的方法,可以用来筛选出质数,计算某些与素数有关的函数等等。
埃拉托斯特尼筛法
在讲这个前,我要讲讲埃拉托斯特尼这个人,他是古希腊人,大约在公元前274~194年前就发明了这个算法,真是太**了!!!
具体做法是:给出要筛数值的范围
因为希腊人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛法”,简称“筛法”。
详情请见:
http://baike.baidu.com/view/82625.htm
线性筛法
我们发现,上面的算法中,同一个数可能会被多个不同的素数筛掉,那是否可以让一个数只被一个素数筛掉。
我们可以规定,一个数只会被其最小(或最大)的质因数筛掉。
那么,这个筛法的时间是线性的,相当于是上面的算法的优化。
如何实现?
看代码:
fo(i,2,N){ if (!check[i]){ check[i]=1; pri[++k]=i; } fo(j,1,k){ if (i*pri[j]>N)break; f[i*pri[j]]=1; if (i%pri[j]==0)break; } }
至于其他的一些筛法的应用,大家就自己琢磨吧。
0 0
- 浅谈筛法
- 浅谈RAII惯用法
- 浅谈快速阅读法
- 浅谈冒泡法排序
- 浅谈番茄学习法
- 浅谈RAII惯用法
- 法雷数列浅谈
- 浅谈二分查找法
- 浅谈
- 浅谈数论(二)进阶素数筛法
- 浅谈试卷式复习法
- 浅谈倍增法求LCA
- 新人新位--浅谈简历被筛
- 分治法(浅谈分治法)
- 浅谈磁盘空间管理的组成链接法
- 浅谈java中的冒泡排序法
- 浅谈共轭梯度法的原理
- 浅谈平方法求向量的模(转载)
- SVN---回退功能
- A星算法 OC实现具体代码
- Maven
- eclipse安装与配置
- 使用JDK工具检查运行系统是否存在内存泄露
- 浅谈筛法
- Spark on yarn Container beyond virtual memory limits
- interbase数据库修方法(转)
- eclipse下SVN subclipse插件
- Hadoop框架排序和分组的理解
- C语言使用正则表达式
- Git 分支管理和冲突解决
- 两个有序数组合并后找第k个数(中位数)
- Java Web性能测试 - 动态网站测试脚本录制