n-1番目の素数で始まり、n番目の素数を生成してインクリメントするPythonクラスを持っています。次にリスト内のすべての素数で階数(sqrt(候補))まで割ります。 しかし、私のクラスはちょうどどこかの無限ループに入ってしまい、なぜ私は理解できません。素数生成プログラムによるメモ生成
class prime_list():
def __init__(self):
self.primelst = [1]
self.n = 1
def increment(self):
self.n+=1
candidate = self.primelst[-1]+1
limit = int(math.floor(math.sqrt(candidate)))
prime = True
while True:
for p in self.primelst:
if p>limit:
break
if (candidate % p) == 0:
prime = False
break
if prime:
self.primelst.append(candidate)
return
else:
candidate += 1
limit = int(math.floor(math.sqrt(candidate)))
prime = True
if __name__=="__main__":
p = prime_list():
p.increment()
このコードをどのように呼び出すかを教えてください。 – Falmarri
私は今何をしているのかを示すために編集しました。最終的に私はこのクラスを他のもので使いたいと思っていますが、インクリメントを呼び出してそのリストに含まれるものを見ることで素数を生成するかどうかを調べるためにテストしたいと思います。私がそれを呼び出すとインクリメントは返されません。 –