质数指只能被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()