求某个数以内的质数

利用python内置函数filter()求从0开始到某个数之间所有的质数:


理解:

    题目大意就是,手动键盘输入一个数,求从0到该数之间的质数。

    质数:一个数只有1和它本身2个因数的数叫做质数(俗称:素数)。

分析:

    算法:

    1,去掉1;

    2,去掉除2之外所有2的倍数;

    3,去掉除3,5,7之外所有3,5,7的倍数

    4,剩下的就是质数

Code1:

#!/usr/bin/env python

x = raw_input('Please enter a number:')
x = int(x)

list1 = range(2,x+1)    # 去掉0和1,因为1非质数,也非合数
list2 = [2,3,5,7]    # 10以内的质数直接给出,很简单

def f2(y):
    if y%2 != 0 and y%3 != 0 and y%5 != 0 and y%7 != 0:
        return True
        
list3 = filter(f2,list1)    # 过滤出从11到该数之间的质数
print list2 + list3         # 加上10以内的质数,得到所有0~x之间的质数


Code2:

#!/usr/bin/env python

x = raw_input('Please enter a number:')
x = int(x)

list1 = [2,3,5,7]
list2 = filter(lambda x:x%2!=0 and x%3!=0 and x%5!=0 and x%7!=0,range(2,x+1))

print list1+list2         # 获得所有的质数


你可能感兴趣的:(python,质数)