Problem 010
10以下の素数の和は 2 + 3 + 5 + 7 = 17 である.
200万以下の全ての素数の和を求めよ.
Answer 010 (Python)
遅い... もっと早くしたい。
import sys
class Problem10:
PRIME = []
def main(self, limit):
for i in range(2, limit):
if self.isPrime(i):
self.PRIME.append(i)
print(sum(self.PRIME))
def isPrime(self, num):
for i in self.PRIME:
if i ** 2 > num:
return True
if num % i == 0:
return False
return True
if __name__ == '__main__':
limit = 2000000
if len(sys.argv) == 2:
limit = sys.argv[1]
p = Problem10()
p.main(int(limit))
(参考) Project Euler とは
Project Euler はプログラミングで数学の問題を解くサイトです。問題は600問以上あるので、勉強に使うのも良し、楽しむのも良しです。
サイトに登録すれば、解答を submit することができ、その場であっているか判定してくれます。
また、問題だけであれば、日本語に翻訳された Wiki もあるのでそちらを見ながらやると捗ると思います。