① python 找最大質數問題
"""題主的問題主要有三個:
1.max_prime中的i錯寫成了x,這是導致錯誤的原因
2.s=[]應放在函數max_prime中,這樣才符合程序設計原則
3.如果要求的是包含x在內的最大質數,max_prime函數中range應
寫成range(2,x+1),此時i的取值范圍才是2到x
此外,尋找最大質數時max_prime中遍歷時應該從後往前遍歷,此時遇到
的第一個質數就是所求最大質數,而不必從前遍歷做無用功。
修改代碼如下:
"""
defprime(x):
foriinrange(2,x//2+1):
ifx%i==0:
returnFalse
returnTrue
defmax_prime(x):
foriinrange(x,1,-1):#x+1以包含x本身
ifprime(i):
returni
print(max_prime(1000))
② 如何用python計算小於100的最大素數
#-*-coding:utf-8-*-
importmathasma#引入math,要用到開平方函春畢數sqrt()
defprime(n):#判斷整數n是不是素數
ifn==1:
return0
t=int(ma.sqrt(n)+1)
foriinrange(2,t):
ifn%i==0:
櫻枝脊森敏return0
return1
foriinrange(1,101):
if(prime(i)):
print(i,end='')#輸出不換行
③ python輸出200以內的最大素數
# 輸出200以內的最大素數
for n in range(199,100,-2):
for i in range(3,int(n**(1/2))+1,2):
if n % i == 0:
break
else:
print(f'200以內最大素數是{n}')
break
程序縮進如圖所示
④ python語言 超級素數
#-*-coding:utf8-*-
#py3
importmath
defPrime(n):#判斷n是不是素數
ifn==1:
returnFalse
ifn==2:
returnTrue
t=int(math.sqrt(n)+1)
foriinrange(2,t):
ifn%i==0:
returnFalse
returnTrue
if__name__=='__main__':
s=0#素數和
k=0#個數
foriinrange(100,10000):
t=i
whilet>1andPrime(t):#t若是素數且大於1
t=int(t/10)#繼續去掉低一位.直至t=0或t不是素數
ift==0:#該數是所求
print(i)#測試使用,僅供觀察,可以去掉
s+=i#求和
k+=1#計數器加1
print(s,k)#輸出結果
結果: