python - 3和5的倍数之和

标签 python

我必须计算给定 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/

相关文章:

python - 如果 A 列中的单元格为空,则修改 B 列中的单元格

python - 将 pageToken 与 Google Analytics Reporting API v4 和 Python 结合使用

javascript - jquery 无法在 PyQt 中工作

python - 为什么我在 Python 解释器中收到 SyntaxError?

python - 在右下角调用 addch 时 curses 失败

python - 在 Pandas DataFrame 中使用 set_index

python - 运行 Numbapro CUDA 代码后计算机死机

python - 更改字符串中的一个字符

Python IMAP : Cannot mark email as seen

Python过滤另一个csv列表上的逗号分隔列表