問:通過列出前六個素數:2、3、5、7、11 和 13,我們可以看到第 6 個素數是 13。第 10001 個素數是什么?
我的代碼是:
def is_prime(num):
if all(num % i != 0 for i in range(2, num)):
return True
else:
return False
def find_nth_prime(nth):
lst_prime = []
num = 2
while len(lst_prime) < nth:
if is_prime(num):
lst_prime.append(num)
print(len(lst_prime), ":", lst_prime[-1])
num = 1
當我嘗試運行find_nth_prime(6)時,它在找到“3”作為素數后卡住了。我在這里想念什么?
uj5u.com熱心網友回復:
在 while 回圈內的 if 陳述句中,它一直在重復,n=4因為n =14 不是素數,所以永遠不會發生。因此,將其從 if 陳述句中取出。
嘗試使用https://pythontutor.com/。它可以幫助您可視化您的代碼
def find_nth_prime(nth):
lst_prime = []
num = 2
while len(lst_prime) < nth:
if is_prime(num):
lst_prime.append(num)
print(len(lst_prime), ":", lst_prime[-1])
num = 1
你也可以對你的is_prime功能做一些改進。因為你不必采取整個范圍(2, num)。取范圍 2 到 num 的平方根就足夠了。(2,int(num**0.5) 1)或sqrt從 python 的math庫中使用
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/429189.html
標籤:python-3.x 素数
上一篇:如何實作物件切片的輔助自定義方法,而不是Python中的__getitem__
下一篇:CSV檔案聚合后洗掉換行符
