給定乙個正整數,編寫程式計算有多少對質數的和等於輸入的這個正整數,並輸出結果。輸入值小於1000。如,輸入為10, 程式應該輸出結果為2。(共有兩對質數的和為10,分別為(5,5),(3,7));
#質數#0、怎麼判斷質數?定義乙個函式判斷是否是質數;
#1、求出整數範圍內的質數;存到列表
#2、遍歷所有的質數,求出和等於給定整數的質數對;
def
isprime
(num)
:#判斷是否是質數
import math
if num <=1or
notisinstance
(num,
int)
:return
false
for i in
range(2
,int
(math.sqrt(num))+
1):if num % i ==0:
return
false
return
true
deffunc
(n):
lis=
#存放所有質數
result=
#存放所有質數對
for i in
range
(n):
if isprime(i)
:print
(lis)
for a in
range
(len
(lis)):
for b in
range
(a,len
(lis)):
if lis[a]
+lis[b]
== n:
(lis[a]
,lis[b]))
print
(result)
print
(len
(result)
)func(
10)
延申知識點:
1、判斷是否為質數優化;對於每個數num,其實並不需要從2判斷到num-1,我們知道,乙個數若可以進行因數分解,那麼分解時得到的兩個數一定是乙個小於等於sqrt(mun),乙個大於等於sqrt(mun),據此,上述**中並不需要遍歷到n-1,遍歷到sqrt(num)即可,因為若sqrt(num)左側找不到因數,那麼右側也一定找不到因數。
2、sqrt() 函式
語法:math.sprt(n)
釋義:求數字n的平方根。
python基礎 質數判斷及優化
1.獲取使用者輸入的任意數,判斷其是否是質數。2.求1000以內所有的質數,並優化程式質數判斷條件 質數是只能被1和它自身整除的數,1不是質數也不是合數。方法一 num int input 請輸入任意輸入乙個數字 建立變數num,接收使用者輸入的引數並轉化成整形 i 0 i num 1if num ...
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...