Python中的Euler#1编写了程序,但得到了错误的答案

时间:2015-11-05 04:25:16

标签: python math

我已经决定要解决Euler问题,以提高我的Python技能,但我遇到了第一个问题。你看,我编写了我认为可以尝试获得答案的程序,并将其与位于here的解决方案页面上找到的程序进行了比较。这是我写的代码:

total = 0

for x in range(1000):
    if x % 5 != 0 and x % 3 != 0:
        total += x
print(total)

根据之前链接的解决方案,当正确答案为233,168时,这给出了答案266,332。我不知道为什么我得错了答案,任何帮助都会受到赞赏。谢谢!

4 个答案:

答案 0 :(得分:1)

您使用的是错误的条件。你必须测试,剩下的是0吗?使用3和5.此外,您必须使用OR代替AND,因为您需要两组数字。

如果您使用AND,您将只获得两者的倍数,3的倍数和5的倍数。

尝试:

total = 0

for x in range(1000):
    if x % 5 == 0 or x % 3 == 0:
        total += x
print(total)

答案 1 :(得分:1)

您在申请De Morgan法律时遗漏了not

total = 0

for x in range(1000):
    if not (x % 5 != 0 and x % 3 != 0):
        total += x
print(total)

not (x % 5 != 0 and x % 3 != 0)相当于x % 5 == 0 or x % 3 == 0,后者在您链接的页面中声明为等效not x%5 or not x%3

答案 2 :(得分:0)

该计划存在一些问题。对于初学者,你的if语句检查错误的条件 - 它检查它是否不能被3或5整除。它应该是if x%3==0 or x%5==0:

其次,您有缩进错误,因此if语句没有执行任何操作。缩进total+=x语句。

您的最终代码如下所示:

total = 0
for x in range(1000):
    if x % 5 == 0 or x % 3 == 0:
        total += x
print(total)

祝你好运,编码愉快!

答案 3 :(得分:-1)

  1. 试试这个:

    def sumOfMultiples(number):
        sum = 0
        for i in range(1,number):
            if i % 2 == 0 or i % 3 == 0:
                sum += i
        return sum
    
    print (sumOfMultiples(15))