打印质数的核心在于判断一个数是否为质数,如果是,就打印它。

 

所以需要先定义一个方法isPrime,它接收一个参数num,来判断该参数是否为质数

def isPrime(num):

质数有一些特点:

1.都>1

2.除了2都是奇数

3.只能整除1和它本身

所以先判断它是否>1,如果<=1,肯定不是质数,返回false

继续判断是否>2,如果不大于,则一定等于2,是质数,返回true

继续判断是否是奇数,如果不是奇数,则一定不是质数,返回false

对于2以上的奇数,需要进行整除运算,此处的遍历范围有多种方式,可以从2到n-1,如果想遍历的少点,可以从2到n/2

用i整除num,如果余数为0,表示能整除,不是质数,返回false

 

main方法中,如果要打印50以内的质数,则只需遍历一次,判断每个数是否为质数,如果是,则添加到列表中,最终打印列表

 

代码如下:

def isPrime(num):
    '''是否大于1,是否大于2,是否为奇数,是否有约数'''
    if num > 1:
        if num>2:
            if num%2==1:
                for i in range(2, int((num-1)/2)): 
                    if num%i == 0:
                        return False #有约数
                return True #无约数
            return False #3以上的偶数
        return True #等于2
    return False #小于2

if __name__ == '__main__':
    Plist = []
    for i in range(50):
        if isPrime(i):
            Plist.append(i)
    print(Plist)