码迷,mamicode.com
首页 > 其他好文 > 详细

尝试用filter()函数删除1~100的素数

时间:2015-05-17 23:44:44      阅读:310      评论:0      收藏:0      [点我收藏+]

标签:python   filter   求素数   

题目来自“廖雪峰的官方网站--Python教程”,尝试用filter()函数删除1~100的素数:

def is_prime(n):
    if n <= 1:
        return False
    for s in range(2,n):
        if n % s == 0:
            return False
    return True
    
print filter(is_prime,range(1,101)


素数的定义:

质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积;而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的。最小的质数是2。


基本判断思路:

在一般领域,对正整数n,如果用2到 技术分享 之间的所有整数去除,均无法整除,则n为质数。


代码中的for循环语句,直接写成

for s in range(2,n)

而不是

for s in range(2,int(sqrt(n))+1)

实际运算中,for循环在到达sqrt(n) % s之前就会被终结掉了,所以写成n还更省事,直接省去import math。

尝试用filter()函数删除1~100的素数

标签:python   filter   求素数   

原文地址:http://wuzebin.blog.51cto.com/9929160/1652104

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!