筛选法求全体素数
2016-03-24 19:16
686 查看
计算素数的一个方法是埃氏筛法,它的算法理解起来非常简单,参考《廖雪峰的python教程》:
def _odd_iter(): n = 1 while True: n = n + 2 yield n def _not_divisible(n): return lambda x: x % n > 0 def primes(): yield 2 it = _odd_iter() # 初始序列 while True: n = next(it) # 返回序列的第一个数 yield n it = filter(_not_divisible(n), it) # 构造新序列 def print_prime(num): # 打印num以内的素数: for n in primes(): if n < num: print(n) else: break if __name__ == '__main__': n=int(input("please input an integer:")) print_prime(n)
注意到Iterator是惰性计算的序列,所以我们可以用Python表示“全体自然数”,“全体素数”这样的序列,而代码非常简洁。
埃氏筛选法算法描述
相关文章推荐
- POJ 2236 Wireless Network(并查集)
- 数学——415B. Mashmokh and Tokens
- DuiLib介绍及其消息处理剖析
- C++开源项目列表
- 私有方法的查找方式
- 世界是数字的读后感
- 欢迎使用CSDN-markdown编辑器
- java方法签名中参数和返回类型字母含义
- 各种基本算法实现小结(六)—— 查找算法
- [ECshop系统]ECtouch如何接入手机短信验证功能
- SQL Server 2008中查看锁信息
- 私有方法的查找方式
- 【BZOJ 3143】 [Hnoi2013]游走 期望DP|高斯消元|贪心
- 【程序人生】:腾讯的职级系统
- 《世界是数字的》读后感
- iOS技术之批量下载
- 戏说 TCP 三次握手 四次挥手
- 3.24
- 探讨对理想团队模式构建的设想及软件流程的理解
- 第四周第五项目——用递归方法实现阶乘调用