我已经决定要解决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。我不知道为什么我得错了答案,任何帮助都会受到赞赏。谢谢!
答案 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)
试试这个:
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))