-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)
このコードは、少なくともこの使用段階で問題なく実行されます。しかし、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:素数を見つけるより効率的な方法があることを知っています。私は自分のコードを改良しても構いませんが、書式化とすべてを練習しています。
編集:不適切なシンボルではなく、より小さいシンボルの誤った追加。修正されました。
:あなたは
if
文を使用して、N = 1を含むことを主張した場合の可能な回避策です'factorial(...')を計算することは決してありません。そして、 'b 'に何も追加しなかったので、' b [1] 'の' IndexError'を発生させてください。 – TigerhawkT3'n <1:'は 'False' 'a 'の範囲は1から10までです。コードは動作しません!本当ですか?それがTrueだった場合、無限ループになります。 –
whileループは必要ありません。 –