打印质数的核心在于判断一个数是否为质数,如果是,就打印它。
所以需要先定义一个方法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)