我刚刚开始尝试我的手在项目欧拉的问题,我已经陷入了第一个代码本身。谁能告诉我,在下面的代码我哪里出错了。
问题陈述如下:
如果我们列出所有10以下的3或5的倍数的自然数,我们得到3、5、6和9。这些倍数之和是23。
求1000以下所有3或5的倍数之和。
我的解决方案如下:
multiple1 = 5
multiple2 = 3
index = 2
sum = 0
while multiple1 < 1000 or multiple2 < 1000:
if multiple1 < 1000:
sum = sum + multiple1
multiple1 = 5 * index
if multiple2 < 1000:
sum = sum + multiple2
multiple2 = 3 * index
index = index + 1
print (sum)
我知道有人已经在某个地方发布了解决方案,但我只是想找出我在逻辑上哪里出错了。
3条答案
按热度按时间vatpfxk51#
您的代码将生成重复值。例如,15是3和5的倍数。因此,每当某个数字是3和5的倍数时,您就会将重复值添加到总和中。下面的代码解决了您的问题。
dced5bon2#
最简单的方法是
iecba09b3#
你也可以不用循环