python基礎 質數判斷及優化

2021-10-04 09:20:15 字數 3111 閱讀 6231

1.獲取使用者輸入的任意數,判斷其是否是質數。

2.求1000以內所有的質數,並優化程式

質數判斷條件:

質數是只能被1和它自身整除的數,1不是質數也不是合數。

#方法一

num =

int(

input

('請輸入任意輸入乙個數字:'))

#建立變數num,接收使用者輸入的引數並轉化成整形

i =0

i = num -

1if num ==1:

print

(num,

'既不是質數也不是合數。'

)elif num <1:

print

('請輸入正整數!'

)else

:while i >

1and num % i !=

0:

i= i-

1if i ==1:

print

(num,

'是質數'

)else

:print

(num,

'是合數'

)

#方法二

i =2

# 建立乙個變數,用來記錄num是否是質數,預設認為num是質數

num =

int(

input

('請輸入任意輸入乙個數字:'))

flag =

true

while i < num:

# 判斷num能否被i整除

# 如果num能被i整除,則說明num一定不是質數

if num % i ==0:

# 一旦進入判斷,則證明num不是質數,則需要將flag修改為false

flag =

false

i +=

1if flag :

print

(num,

'是質數'

)else

:print

(num,

'不是質數'

)

i =

2while i <=

1000

:# 建立乙個變數,記錄i的狀態,預設認為i是質數

flag =

true

# 判斷i是否是質數

# 獲取所有可能成為i的因數的數

j =2while j < i:

# 判斷i能否被j整除

if i % j ==0:

# i能被j整除,證明i不是質數,修改flag為false

flag =

false

j +=

1# 驗證結果並輸出

if flag :

print

(i)

i +=

1

優化方案:

模組,通過模組可以對python進行擴充套件

引入乙個time模組,來統計程式執行的時間

time()函式可以用來獲取當前的時間,返回的單位是秒

獲取程式開始的時間,以執行時間來衡量優化結果。

優化前:

from time import

*begin = time(

)i =

2while i <=

1000

:# 建立乙個變數,記錄i的狀態,預設認為i是質數

flag =

true

# 判斷i是否是質數

# 獲取所有可能成為i的因數的數

j =2while j < i:

# 判斷i能否被j整除

if i % j ==0:

# i能被j整除,證明i不是質數,修改flag為false

flag =

false

j +=

1# 驗證結果並輸出

if flag :

pass

#在測試優化中我們不考慮print的影響

# print(i)

i +=

1# 獲取程式結束的時間

end = time(

)# 計算程式執行的時間

print

("程式執行花費了:"

,end - begin ,

"秒")

# 程式執行花費了: 0.10073041915893555 秒

優化後程式:

from time import

*begin = time(

)#獲取程式開始時間

i =2

while i <=

100000

: flag =

true

j =2while j <= i **

0.5:

#對條件優化 數學邏輯,只用查詢一般就可以確定是否為質數。

if i % j ==0:

flag =

false

# 一旦進入判斷,則證明i一定不是質數,此時內層迴圈沒有繼續執行的必要

# 使用break來退出內層的迴圈

break

j +=

1if flag :

# print(i)

pass

i +=

1# 獲取程式結束的時間

end = time(

)# 計算程式執行的時間

print

("程式執行花費了:"

,end - begin ,

"秒")

程式執行花費了: 0.0019943714141845703 秒

執行次數

優化前優化後時間

1000

0.10073041915893555秒

0.0019943714141845703 秒

10000

10.086509466171265 秒

0.0019943714141845703 秒

100000

無法計算出來

1.2611010074615479 秒

1.將迴圈控制條件修改如下:

python基礎練習 判斷質數(素數)

給定乙個正整數,編寫程式計算有多少對質數的和等於輸入的這個正整數,並輸出結果。輸入值小於1000。如,輸入為10,程式應該輸出結果為2。共有兩對質數的和為10,分別為 5,5 3,7 質數 0 怎麼判斷質數?定義乙個函式判斷是否是質數 1 求出整數範圍內的質數 存到列表 2 遍歷所有的質數,求出和等...

python判斷質數程式 python判斷質數

學習python斷斷續續有兩個多星期了。學習了基本的列表 元組 字典等基本資料結構的操作,從現在開始學習一些基本的語法 函式和模組,以及用python實現一些演算法。雖然現在還沒有學到很深的地步,但是試著去做一些記載。從今天開始寫python的學習,主要是開乙個頭。給自己乙個學python,記錄的念...

Python判斷 段質數

質數 大於1的自然數中,除了1和它本身以外不再有其他因數的自然數 因數 指整數a除以整數b b 0 的商正好是整數而沒有餘數,我們就說b是a的因數。num int input 輸入乙個數字 if num 1 for i in range 2,num 這是我一開始想法,網上搜到一下面的 for i i...