-1
我編寫了一個程序來查找數字列表中的素數,只是練習格式化和全部。這裏是我的代碼:爲什麼'while'導致程序在Python中運行時間更長
from math import *
#Defining range to be checked
a = range(1,10)
#Opening empty list
b = []
#Wilsons method for primes
for n in a:
if ((factorial(n-1))+1)%n == 0:
b.append(n)
此代碼運行沒有問題,並且相當快的,在這個階段至少使用。但是,當我包含一段時間的陳述(見下文)時,它會明顯變慢。
from math import *
#Defining range to be checked
a = range(1,10)
#Opening empty list
b = []
#Wilson't method for primes
for n in a:
while n>1:
if ((factorial(n-1))+1)%n == 0:
b.append(n)
任何人都可以解釋爲什麼會是這樣嗎?
n.b:我知道有更有效的方法來尋找素數。我只是練習格式化和所有,儘管我不介意改進我的代碼。
編輯:錯誤添加小於符號而不是合適的大於符號。糾正。
第二個代碼要快很多,如'N'開始於'1',因此永遠不會滿足'ñ<1'並且從不計算'factorial(...'。然後它應該爲'b [1]'引發一個'IndexError',因爲它從不向'b'添加任何東西。 – TigerhawkT3
'而n <1:'是'False'因爲'a'範圍從1到10.代碼不能工作!你確定嗎?如果它是真的,它將是一個無限循環。 –
我不認爲需要while循環在所有 –