Python
math
ProjectEuler

会社で少し盛り上がった Project Euler をやってみる 010

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 もあるのでそちらを見ながらやると捗ると思います。

Project Euler(日本語訳)