-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循环在所有 –