用Python解Project Euler (#53)

9 投票
5 回答
2956 浏览
提问于 2025-04-16 02:00

我正在学习Python,所以我在做一些Project Euler的问题。我不确定这是Python的问题,还是我自己哪里搞错了,但我在第53题上似乎得到了错误的答案。这里有个链接可以查看这个问题 http://projecteuler.net/index.php?section=problems&id=53

这是我的代码:

from math import factorial

def ncr(n,r):
    return (factorial(n)/(factorial(r)*factorial(n-r)))

i = 0

for x in range(1,100):
    for y in range(0,x):
        if(ncr(x,y) > 1000000):
            i=i+1
        
print i

我得到了3982,这显然是错误的答案。我是不是在Python上做错了什么?

5 个回答

2

注意,n的值必须大于等于1并且小于等于100。目前你的n的范围是从1到99。你也可以使用xrange

from math import factorial

def ncr(n,r):
    return (factorial(n)/(factorial(r)*factorial(n-r)))

i = 0

for x in range(1,101):
    for y in range(1,x+1):
        if(ncr(x,y) > 1000000):
            i=i+1

print i
4

我觉得你的代码是对的,不过你应该把x的范围设置到100,包括100在内。所以你应该使用

for x in range(1,101):

希望这能帮到你。欧拉真棒!

10

range( a, b) 这个函数生成的数字范围是不包括 b 的。

撰写回答