|
发表于 2020-4-25 12:45:38
|
显示全部楼层
抛砖引玉。
- import time
- import math
- t0 = time.time()
- MAXPRIME = 100000
- max2, max5 = int(math.log(MAXPRIME, 2)), int(math.log(MAXPRIME, 5)) # 2的最高次幂和5的最高次幂
- MAXN = int(math.pow(10, max(max2, max5)))
- ISPRIME = [True]*MAXPRIME
- ISPRIME[0] = ISPRIME[1] = False
- for i in range(2, MAXPRIME//2):
- if ISPRIME[i] == False:
- continue
- for j in range(i*i, MAXPRIME, i):
- ISPRIME[j] = False
- count, sum = 3, 10 # 10^n一定不能整除2、3和5,不参与循环,计入初始值。
- for p in range(7, MAXPRIME, 2):
- if ISPRIME[p]:
- if pow(10, MAXN, 9*p) != 1:
- count += 1
- sum += p
- # print([count, p], end='\t')
- print("Answer: ", sum)
- print("Running time: ", time.time()-t0, "s")
复制代码
Answer: 453647705
Running time: 0.10031580924987793 s |
|