项目Euler 72 Python3

时间:2017-05-19 16:44:10

标签: python python-3.x math

想法是找到分母d <= 1,000,000的不可约分数的数量。这是我使用主筛和Euler的函数实现的:

target=10**6
s=0
def primesSieve(limit):
    dictPrimes = {x:True for x in range(2, limit+1)}
    for i in dictPrimes:
        if dictPrimes[i]:
            for f in range(2*i,limit+1, i):
                dictPrimes[f] = False
    return([i for i in dictPrimes if dictPrimes[i]==True])
primes=primesSieve(10**3)
def tot(n,primes):
    result=n
    for i in primes:
        if n%i==0: result-=result/i
    if result==n: result-=1
    return result
for n in range(2,target+1):
    s+=tot(n,primes)
print(s)

我知道这不是最有效的方法,但我想它也应该有用。但是,我没有得到正确的答案。请帮我弄清楚错误。谢谢!

更新 问题是筛子也必须高达1,000,000。现在我得到了正确答案。

0 个答案:

没有答案