质数指只能被1和自己本身相除的数,1不是质数
一、方式一:用for循环嵌套循环实现
思路:定义空列表,遍历2到100的整数,判断如果不能被1和该整数外的其他整数整除时,把整数写入列表中
思考:这种实现方式没有数都需要去除小于该数的所有整数,所以这里改为遍历时,先把该数字写入列表,然后用该数去除以小于它的整数,一旦遇到可以整除的整数,就从列表中删除该整数,并退出此次循环
a = [] for i in range(2, 101): a.append(i) for j in range(2, i): if i % j == 0: a.remove(i) break print(a)
二、 方式二:定义判断是否质数的函数,调用函数判断是质数的写入列表输出
1. 定义判断是否为质数的函数,如果是质数返回1,不是质数返回0
def check(a): for i in range(2, a): if a % i == 0: return 0 return 1
2. 使用filter()生成符合条件的列表
b = list(filter(check, range(1, 100))) ##因为filter返回值是可迭代对象,所以这里要转成列表再输出 print(b) ##还可以使用匿名函数lambda b = list(filter(lambda x: check(x), range(1, 100)))
3. 使用列表生成式生成符合条件的列表
c = [x for x in range(1, 100) if check(x)] print(c)
三、扩展
把100参数化,输出n以内的所有质数
1. 用函数实现
def primelist(n): a = [] for i in range(2, n+1): a.append(i) for j in range(2, i): if i % j == 0: a.remove(i) break print(a) primelist(10)
2. 用类实现
class PrimeList: def __init__(self, x): self.x = x def check(self, a): for i in range(2, a): if a % i == 0: return 0 return 1 def getlist(self): b = list(filter(lambda x: self.check(x), range(1, self.x))) c = [x for x in range(1, self.x) if self.check(x)] print(b) print(c) PrimeList(10).getlist()
标签:质数,self,range,-----,100,列表,check From: https://www.cnblogs.com/youqiaohaozi/p/17134938.html