a=[23,45,78,87,11,67,89,13,243,56,67,311,431,111,141]
j=2#計數用,遍歷從2到元素值的每一個數(不會呼叫python里面的函式,不然回圈到平方根就好了)
for i in a:#外層while回圈
while j<i:#內層while回圈,所有次數的回圈結束后會得到j的值
k=i%j#取余數
j+=1
if k==0:#判斷是否為合數,如果是就直接跳過內層回圈,j的值不會繼續計數
break
if j==i:#判斷是否為質數,由于合數會提前結束內層回圈,只有質數的j才能和質數自身相等
a.remove(i)#去掉串列中的質數
j=2
print('{}\n數量為{}'.format(a,len(a)))
程式目的是留下串列中的合數,去掉質數
uj5u.com熱心網友回復:
用for嵌套邏輯就簡單多了uj5u.com熱心網友回復:
你的j+=1應該放到break之后uj5u.com熱心網友回復:
試過,運行結果也不對但
uj5u.com熱心網友回復:
換了之后也運行結果不正確
uj5u.com熱心網友回復:
程式目的是留下串列中的合數,去掉質數
還需說明一下,用debugger檢查后,發現有些資料根本沒有進入回圈,但不知道為什么
uj5u.com熱心網友回復:
def num(n):p = True
for i in range(3,n,2):
if(n%2==0 or n%3==0):
p= False
break
if(n%i==0):
p = False
break
if(n<=3):
p = True
if(n<=1):
p = False
return p
for i in range(1,100):
if(num(i)):
print(i)
#篩選素數
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/153235.html
上一篇:求助!!怎么用已有的r包編有關于刀切經驗似然的程式?
下一篇:python報錯幫忙求解
