记得读书的时候老师拿出了五十道经典编程题来,当时觉得很有趣,当时还是用Java实现的,这里我们用Python来实现下 😊
问题:判断101-200之间有多少个素数,并输出所有素数。
tips:
什么是素数?
素数又称质数,一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。
如何判断一个数是不是素数?
在一般领域,对正整数n,如果用2到这个数的平方根
之间的所有整数去除,均无法整除,则n为质数。
质数大于等于2 不能被它本身和1以外的数整除
实现代码:
from math import sqrt
'''
@Description: 判断一个自然数是否是质数
@params: 自然数
@retrun: boolean(true:是质数,false:不是质数)
'''
def isPrime(num):
for i in range(2, int(sqrt(num))+1):
if num % i == 0:
return False
return True
'''
@Description: 判断两个数字(包含n1,不包含n2)之间的质数有哪些,并返回这两个数字之间的所有质数组成的列表
@params: (n1,n2) 都是大于1的自然数,n1:查找大于等于n1的质数,n2:查找小于n2的质数
@retrun: 列表
'''
def rangeNumPrime(n1,n2):
if n1<2:
raise Exception("素数范围是大于1的自然数")
if n1>=n2:
raise Exception("第二个参数必须大于第一个参数")
primeNums=[]
for num in range(n1,n2):
if isPrime(num):
primeNums.append(num)
return primeNums
'''
@Description: 以列表的形式打印出101(包含)到200(不包含)的质数
'''
print(rangeNumPrime(101,200))
'''
运行打印结果:
[101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]
'''