Python - 获取 100 以内的质数
题目: 获取 100 以内的质数。
程序分析:质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数,如:2、3、5、7、11、13、17、19。
方法一:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
num=[];
i=2
for i in range(2,100):
j=2
for j in range(2,i):
if(i%j==0):
break
else:
num.append(i)
print(num)
方法二:
import math
def func_get_prime(n):
return filter(lambda x: not [x%i for i in range(2, int(math.sqrt(x))+1) if x%i ==0], range(2,n+1))
print func_get_prime(100)
输出结果为:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
张小川
835***338@qq.com
参考方法:
张小川
835***338@qq.com
红烧土豆块
545***924@qq.com
参考:
红烧土豆块
545***924@qq.com
阳光不锈
173***979@qq.com
Python3 采用递归:
阳光不锈
173***979@qq.com
newpy
bin***@163.com
filter 方法,匿名函数,如果推导式为空,则返回值为 True。为便于代码理解,省略了求平方根。
文章示例中方法二的写法可以优化如下:推导式中将 x % i 修改为 x
Type "help", "copyright", "credits" or "license" for more information. >>> lis = list(filter(lambda x: not[x for i in range(2, x) if x % i == 0], range(2, 100))) >>> print(lis) [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]newpy
bin***@163.com