题目来自“廖雪峰的官方网站--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。
原文地址:http://wuzebin.blog.51cto.com/9929160/1652104