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


不管是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)

结果是一样的!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM