qiurenburuqiuji 发表于 2022-4-4 17:11:14

求助,如有空的话 能注释一下好理解 谢谢

判断101-200之间有多少个素数,并输出所有素数。(素数:除了1和它本身,不能被任何数整除))

isdkz 发表于 2022-4-4 17:11:15

本帖最后由 isdkz 于 2022-4-4 18:27 编辑

# 判断是否素数的函数
def isPrime(n):
    # 偶数都不是素数
    if n % 2 == 0:
      return False
   
    # 对奇数进行判断,能被除他自身和 1 之外的整数整除就不是素数
    # 2 在前面偶数的时候判断过了,所以从 3 开始
    # 如果一个数不是素数是合数,那么一定可以由两个自然数相乘得到,其中一个大于或等于它的平方根,
    # 一个小于或等于它的平方根。并且成对出现,所以只用计算到该数的平方根以下看除了1有没有该数的因数,若没有,则是素数。
    # 所以到 他的平方根加 1 为止,因为 range 左闭右开,所以加 1,步长为 2 是这里只对奇数判断
    for i in range(3, int(n ** 0.5 + 1), 2):
      if n % i == 0:
            return False
    return True

# 存放结果的列表
result = []

for i in range(101, 200):
    # 如果 i 是素数,添加进列表
    if isPrime(i):
      result.append(i)

print(f'101-200之间一共有{len(result)}个素数')
print('101-200之间的所有素数为:')
for i in result:
    print(i)
页: [1]
查看完整版本: 求助,如有空的话 能注释一下好理解 谢谢