你的第一個和最大的問題是,你需要列出n
作爲參數isprime
之前,你可以在isprime
使用它,然後才能在main
傳遞一個參數。有關更多詳細信息,請參見Defining Functions的教程。但基本上,它是這樣的:
def isprime(n):
同樣,x = Prime
是要提出一個NameError
,因爲沒有什麼命名Prime
。鑑於它實際上沒有做任何事情,你應該刪除它。
當然,這不會使這是一個完整的工作總理測試功能,但它是如何從你的位置開始。
下一步是考慮如何從函數返回。如果發現n
的值,則顯然n
不是素數,因此isprime
爲false。如果你經歷了所有的可能性,並沒有發現任何分歧n
,那麼isprime
是真實的。因此,在正確的位置使用兩個return
聲明,即可完成該功能。
一旦它至少總是返回真或假,你有錯誤修復。*
看看你,range(1, n+1, 1)
得到的數字。其中兩個數字保證將任何n
分開。你如何避免這個問題?
當你得到它的工作,然後你可以在優化它。如果你在維基百科上查找primality test,你可以看到一個非常簡單的方法來改進天真的試驗劃分測試。一些研究將顯示不同算法的優缺點。但是,如果您的目標足夠快,那麼通常不值得爲優化做更多的努力。
*您可能要考慮寫上一串數字電話isprime
和正確答案的比較結果(你已經知道了你的頭1的頂部答案的測試程序不素數,2是素數,17是素數等)。這就是所謂的Test Driven Development,這是一個很好的方式來確保你已經涵蓋了所有可能的情況 - 包括0,1,2,3等離羣值。
你知道如何做到這一點的紙,你只是有把它變成代碼的問題?或者你不知道該怎麼做?什麼是'x = Prime'? – csmckelvey 2014-11-24 22:28:22
@Takendarkk我不確定如何在紙張和代碼上做到這一點。我猜X = Prime應該是消息,當它說它是真的(意味着輸入的數字是素數)。 – 2014-11-24 22:30:38