使用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