为什么 'while' 导致程序 运行 在 Python 中更长
Why does 'while' cause the program to run longer in 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)
这段代码运行没有问题而且相当快,至少在这个使用阶段是这样。但是,当我包含一个 while 语句(见下文)时,它会慢得多。
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
的值不会在 内 您的 while
循环中改变.
您可能一开始就没有在寻找 while
循环。在没有第一次迭代 (n = 1) 的情况下使用 for
循环应该就足够了。如果您坚持包含 n=1,使用 if
语句是一种可能的解决方法:
a=range(1,10)
b=[]
for n in a:
if n>1:
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 = []
#Wilsons method for primes
for n in a:
if ((factorial(n-1))+1)%n == 0:
b.append(n)
这段代码运行没有问题而且相当快,至少在这个使用阶段是这样。但是,当我包含一个 while 语句(见下文)时,它会慢得多。
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
的值不会在 内 您的 while
循环中改变.
您可能一开始就没有在寻找 while
循环。在没有第一次迭代 (n = 1) 的情况下使用 for
循环应该就足够了。如果您坚持包含 n=1,使用 if
语句是一种可能的解决方法:
a=range(1,10)
b=[]
for n in a:
if n>1:
if ((factorial(n-1))+1)%n == 0:
b.append(n)