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...