今天同学给我出了一道题,求N以内的所有的质数的和,要求在2000000以内进行测试,然后我就苦逼的做起来了,来分享一下我的成果吧,你们肯定一看就懂的
# -*- encoding = 'utf-8' -*-
import time
# n以下的质数的和
def primeNumberSum(n):
if n < 2:
return 0
if n == 3:
return 2;
prime = [i for i in range(n)]
prime[1] = 0
# 过滤掉大于等于4的偶数的倍数(2,4,6,8...)
for i in range(4,n,2):
prime[i] = 0
# 过滤掉大于等于3的奇数的倍数
for i in range(3,n // 2,2):
# 从2 * i开始过滤
for j in range(i + i,n,i):
# 若prime[j]已经为0,则不再赋值
if prime[j]:
prime[j] = 0
return sum(prime)
if __name__ == '__main__':
begin = time.time()
print(primeNumberSum(2000000))
end = time.time()
print(str(end - begin) + 's')