关闭

寻找所有的素数的python实现

标签: 寻找素数python实现
1229人阅读 评论(0) 收藏 举报
分类:

寻找所有的素数的python实现

寻找素数也是一个在学习python的一个简单题目。涉及到的知识点是:python内置函数filter()的应用。

思路如下:

  • 在全部自然数中,先取出素数2,然后过滤掉以2为因子的所有数(因为这些数都不是素数)得到新的序列
  • 然后在新序列中取出素数 3,然后过滤掉以3为因子的所有数得到一个新的序列
  • 然后在新序列中去除第一个数,然后过滤掉以这个数为因子的所有数。
  • 按上面的步骤做下去即可取出所有的数

实现代码如下:

#coding=UTF-8
#寻找所有的素数
def not_div(n):
    return lambda x:x%n!=0

def pro_odd():#从3开始的奇数生成器
    n=1
    while True:
        n=n+2
        yield n

def primes():#定义一个生成器,不断返回下一个素数
    yield 2
    it=pro_odd()
    while True:
        n=next(it)
        yield n
        it=filter(not_div(n),it)

#测试
for i in primes():#由于是无穷序列,下面对输出就进行了一个限制
    if(i<300):
        print(i)
    else:
        break   

0
0
查看评论

用Python寻找质数

质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数。---百度百科 在一般领域,对正整数n,如果用2到根号n之间的所有整数去除,均无法整除,则n为质数。质数大于等于2 不能被它本身和1以外的数整除 根据以上...
  • HuaLingPiaoXue
  • HuaLingPiaoXue
  • 2017-08-27 00:04
  • 271

输出100至200之间的所有素数

#include //输出100至200之间的所有素数 #include //加载数学函数文件 int main() { int n,i,k; for(n=101;n<=200;n++) { k=sqrt(n); //sqrt()是开根函数 缩小运算次数,因为...
  • qq_39565202
  • qq_39565202
  • 2017-07-20 09:26
  • 730

输出100~200之间的素数

如果要输出一个素数,首先要判断它是不是素数。大家都知道素数是只能被1和它本身除尽的数,1既不是素数也不是合数,2是最小的素数同时也是唯一一个是偶数的素数,所以要判断一个数是不是素数,我想到了三种方法。  假设这个数为a  法一:让a依次和2到a-1相除,如果a不能被2到a-1之间...
  • SmileLeLe0820
  • SmileLeLe0820
  • 2016-05-26 14:54
  • 437

输出1~N之间的所有素数

#include #include int main() {  unsigned int N=0;  unsigned int*numbers=NULL;  unsigned int i,j,flag=0;  printf("筛选法求素数,输出(1,...
  • timeryao2015
  • timeryao2015
  • 2015-06-05 11:04
  • 794

素数筛选法+记录给定范围内素数的个数(高效率)

当一个数不算大的时候,可以用普通的求素数的方法去求,但是如果一个数过大的话,就像让求1-十亿之间素数的个数,普通方法就不行了,这事就需要用到素数筛选法,他的时间复杂度是O(n),尽管不算很好,但是,也算是目前为止比较快的一种方法了,它是以空间换取时间,现在的计算机,空间有的是,但是时间是非常珍贵的。...
  • coco_astrids
  • coco_astrids
  • 2016-11-19 08:46
  • 540

求出范围内所有的素数

求出范围内所有素数 Description 给出整数a,b,求出区间[a,b]内的所有素数。 Input 有多组测试数据。输入的第一行是整数T(0 Output 对应每组输入,输出一行[a,b]区间内所有的素数,每个数后...
  • hunnu_denny
  • hunnu_denny
  • 2012-11-30 15:14
  • 388

素数平方和(类)

素数平方和(类) 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte 总提交:818            测试通过:589 ...
  • suguoliang
  • suguoliang
  • 2017-05-16 08:24
  • 398

输出100-200内的素数

#include #include int main() { int i = 0,j = 0,k = 0; for(i=101; i<200; i=i+2) { j=sqrt(i); for(k=2; k<=j; k++) if (i%k =...
  • superficial_
  • superficial_
  • 2016-09-23 11:54
  • 684

计算100以内的素数

素数:只能被自己和1整除的数。
  • lantiancaiyun
  • lantiancaiyun
  • 2014-08-22 15:58
  • 629

求100~200之间的素数的2种方法

c语言,求100~200之间的素数的2种方法 标签: c语言素数100200之间 2016-09-20 21:22 4984人阅读 评论(0) 收藏 举报 分类: c语言(10) 作者同类文章X 版权声明...
  • u012829986
  • u012829986
  • 2017-10-07 23:20
  • 273
    个人资料
    • 访问:698828次
    • 积分:12684
    • 等级:
    • 排名:第1311名
    • 原创:606篇
    • 转载:14篇
    • 译文:0篇
    • 评论:115条
    联系方式
    有问题欢迎探讨咨询哈
    qq号就不留了哈
    欢迎留言
    博客专栏
    最新评论