使用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
时每种情况下发生的情况来检查它。在您的第一个代码中,total1
和 total2
都会加 15,得到 total1 + total2 = 30
的总和。而在第二种方法中,您只将 15 添加到总数中一次,使总总数仅为 15.
你需要弄清楚当一个数被两个都除时你想采用哪种方法,是否应该相加两次?还是只有一次?
我绝对是编程的初学者,我一直在做像这样的简单任务。 我真的不明白我是如何在下面的这些代码中得到 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
时每种情况下发生的情况来检查它。在您的第一个代码中,total1
和 total2
都会加 15,得到 total1 + total2 = 30
的总和。而在第二种方法中,您只将 15 添加到总数中一次,使总总数仅为 15.
你需要弄清楚当一个数被两个都除时你想采用哪种方法,是否应该相加两次?还是只有一次?