質數是指只能被1和它本身整除的正整數 , 如2、3、5、7等 。在計算機編程中 , 尋找質數是一個常見的問題 。Python作為一門易學易用的編程語言 , 也提供了多種方法來打印100以內的質數 。
一、暴力算法

暴力算法是最基本的尋找質數的方法 , 它的思路是對每個數字進行一次判斷 , 看它是否能被除了1和它本身以外的數整除 。在Python中 , 可以使用for循環來實現:
```
for i in range(2, 101):
is_prime = True
for j in range(2, i):
【python如何打印100以內的質數?】if i % j == 0:
is_prime = False
break
if is_prime:
print(i)
```
上述代碼中 , 外層的for循環遍歷2到100之間的所有數字 , 內層的for循環判斷該數字是否為質數 。如果該數字能被2到i-1之間的任意一個數整除 , 則不是質數 , 否則是質數 。
然而 , 暴力算法的時間復雜度為O(n^2) , 當n很大時 , 程序運行時間會非常長 。
二、優化算法
為了提高尋找質數的效率 , 可以采用一些優化算法 。其中 , 較為常用的優化算法有:
1.質數只與比它小的質數有關系 。
這個算法的思路是 , 如果一個數是質數 , 那么它一定不能被比它小的質數整除 。因此 , 我們只需要記錄已知的質數 , 然后對每個數字判斷它是否能被已知的質數整除即可 。代碼如下:
```
primes = [2]
for i in range(3, 101):
is_prime = True
for p in primes:
if i % p == 0:
is_prime = False
break
if is_prime:
primes.append(i)
print(primes)
```
上述代碼中 , 我們先定義一個列表primes , 用來存儲已知的質數 。然后 , 對于每個數字i , 我們遍歷已知的質數p , 如果i能被p整除 , 則說明i不是質數 , 直接跳出循環 。如果遍歷完所有已知的質數 , 仍然沒有發現i能被整除的情況 , 則說明i是質數 , 將它加入primes列表中 。
2.質數只能是6的倍數加上1或者5 。
這個算法的思路是 , 除2和3以外的質數一定是6的倍數加上1或者5 。因此 , 我們可以遍歷所有6的倍數加上1或者5的數字 , 然后判斷它是否為質數 。代碼如下:
```
primes = [2, 3]
for i in range(5, 101, 6):
is_prime = True
for j in range(2, int(i ** 0.5) + 1):
if i % j == 0:
is_prime = False
break
if is_prime:
primes.append(i)
for i in range(7, 101, 6):
is_prime = True
for j in range(2, int(i ** 0.5) + 1):
if i % j == 0:
is_prime = False
break
if is_prime:
primes.append(i)
print(primes)
```
上述代碼中 , 我們先定義一個列表primes , 用來存儲已知的質數 。然后 , 對于所有6的倍數加上1或者5的數字i , 我們遍歷2到i的平方根之間的所有數字j , 如果i能被j整除 , 則說明i不是質數 , 直接跳出循環 。如果遍歷完所有可能的因子 , 仍然沒有發現i能被整除的情況 , 則說明i是質數 , 將它加入primes列表中 。
三、庫函數
除了自己編寫算法尋找質數以外 , Python還提供了一些庫函數來幫助我們尋找質數 。其中 , 比較常用的庫函數有:
1.math.isqrt
猜你喜歡
- 如何實現python匯率轉換代碼?
- win10 python3.7如何打包.py文件?
- python如何調用mysql?
- 如何用python輸出99乘法表?
- python dict遍歷
- python取余數運算符
- 扁豆薏米湯應該如何做?
- 蜂蜜綠豆粥應該如何做?
- 如何預防冬季洗澡過后皮膚癢
- 如何預防洗完澡后臉癢
