私は isprime(n) という関数を書きました。この関数は、数値が素数の場合は True を返し、そうでない場合は False を返します。関数を定義された回数ループすることができます。しかし、x個の素数が見つかるまで反復する方法がわかりません。For ループと While ループについては十分に理解しているように感じますが、ブール値の戻り値をループに統合する方法については混乱しています。ここに私の現在のコードとエラーがあります:
エラー結果:
input:100
Traceback (most recent call last):
File "euler7.py", line 25, in <module>
primeList += 1
TypeError: 'int' object is not iterable
そしてコード:
def isprime(n):
x = 2
while x < sqrt(n):
if n % x == 0:
return False
else:
x += 1
return True
userinput = int(raw_input('input:'))
primeList = []
primesFound = 0
while primesFound != userinput:
i = 2
if isprime(i):
primeList.append(i)
primeList += 1
i += 1
else:
i += 1
編集(更新された機能コードを含む):
from math import sqrt
def isprime(n):
x = 2
while x < (sqrt(n) + 1):
if n % x == 0:
return False
else:
x += 1
return True
userinput = int(raw_input('input:'))
primeList = []
primeList.append(2)
i = 2
while len(primeList) != userinput:
if isprime(i):
primeList.append(i)
i += 1
else:
i += 1
print 'result:', primeList[-1]