gpt4 book ai didi

python - 3和5的倍数之和

转载 作者:太空狗 更新时间:2023-10-30 02:07:05 25 4
gpt4 key购买 nike

我必须计算给定 N 个数(N 除外)范围内 3 和 5 的所有倍数(包括它们本身)的总和。我创建了一个 python 代码,它适用于 N = 10,但不适用于 N = 100。我不明白为什么。

这是代码:

#!/bin/python3
import sys
def multiples_sum(n):
sum1 = 0
for i in range(n):
if i % 3 == 0:
sum1 = sum1 + i
if i % 5 == 0:
sum1 = sum1 + i
return sum1
t = int(input().strip())
for a0 in range(t):
n = int(input().strip())
print(multiples_sum(n))

最佳答案

您正在计算 15 (= 3 * 5) 的倍数两次。

你的代码应该是

for i in range(n):
if i % 3 == 0:
sum1 += i
elif i % 5 == 0:
sum1 += i

注意 elif 而不是 if

或者:

for i in range(n):
if i % 3 == 0 or i % 5 == 0:
sum1 += i

或直接(如 DeepSpace 在评论中建议的那样)

sum1 = sum(i for i in range(n) if 0 in {i % 3, i % 5})

请注意,根本不需要循环:知道从 1 到(包括)n 的整数之和是

def sum_to(n): 
return ((n+1)*n)//2

您可以从以下位置获取您的电话号码:

sum1 = 5 * sum_to((n-1)//5) + 3 * sum_to((n-1)//3) - 15 * sum_to((n-1)//15)

(这可以被概括并变得更漂亮......但我相信你以这种形式理解了这个想法)。

关于python - 3和5的倍数之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55221070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com