首页 > 技术文章 > 使用while循环和for循环输出2~100之间的素数(只能被1和自己整除的自然数)

surplus-G 2021-09-17 20:56 原文

不管是while循环还是for循环,原理都是取根号,循环到取根号后的数,至于为什么需要循环到开根后的数,我想主要是因为一个数的分解因子在开根号后的数向上取整以下吧。
话不多说,上代码:

  • while循环:
    while循环原理如下:
i = 2
while i <= 100:
    # 内层循环 j 从2循环到根号 i
    j = 2
    while j <= (i / j):  # j <= (i/j) 等效于 j*j <= i 也就等于 j <= 根号 i
        if i % j == 0:
            break  # 判断如果i可以被j整除,则提前跳出j的循环
        j = j + 1
    # 如果j > i/j判断为真表示正常循环结束,i没有被j整除,i是素数。 否则就是提前跳出j循环的,i有被j整除,i不是素数。
    if j > i / j:
        print(i, end="  ")
    i = i + 1

输出结果:

2  3  5  7  11  13  17  19  23  29  31  37  41  43  47  53  59  61  67  71  73  79  83  89  97  
  • 也可以用for循环:
    这里的round()函数是向上取整。
import math

for i in range(2, 101):
    flag = 0
    for j in range(2, round(math.sqrt(i) + 1)):
        if i % j == 0:
            flag = 1
            break
    if flag:
        continue
    print(i)

结果是一样的!

推荐阅读