青青草免费线看线看|啊在车上停不下来了|国产少女免费观看电视剧|仑乱88MAV|精品老司机在线观看视频|国产一区二区三区高清免费视频|在线观看免费777av

python如何打印100以內的質數?

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

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

猜你喜歡