使用for循环查找100范围内的所有3和5的倍数

Finding all the multiples of 3 and 5 in the range of 100 using for loop

我绝对是编程的初学者,我一直在做像这样的简单任务。 我真的不明白我是如何在下面的这些代码中得到 2 个不同的结果的。

total1 = 0
for element in range(1, 100):
    if element % 3 == 0:
        total1 = total1 + element
print(total1)
#1683

total2 = 0
for element in range(1, 100):
    if element % 5 == 0:
        total2 = total2 + element
print(total2)
#950

print(total1 + total2)
#2633

然后另一种计算倍数的方法给出了不同的结果。

total = 0
for element in range(100):
    if element % 3 == 0 or element % 5 == 0:
        total += element
print(total)
#2318

从数学上讲,如果我没记错的话,100 范围内数字 3 和 5 的倍数之和是 2633,但我无法弄清楚为什么其他解决方案会给我 2318。

提前感谢您的帮助!

不同之处在于当元素是一个既能被 3 又能被 5 整除的数字时。在你的第一个方法中,这个数字将被添加到总数中两次,而在第二个中它只会被添加一次。

例如,您可以通过查看 element = 15 时每种情况下发生的情况来检查它。在您的第一个代码中,total1total2 都会加 15,得到 total1 + total2 = 30 的总和。而在第二种方法中,您只将 15 添加到总数中一次,使总总数仅为 15.

你需要弄清楚当一个数被两个都除时你想采用哪种方法,是否应该相加两次?还是只有一次?