Problem #1 of Project Euler读为:
如果我们列出所有低于10的自然数,这些自然数是3或的倍数 5,我们得到3、5、6和9。这些倍数的总和为23。
找到1000以下的3或5的所有倍数之和。
这是我的尝试:
T = int(input())
for i in range(T):
sum = 0
a = int(input())
for j in range(a):
if (j%3==0 or j%5==0):
sum = sum + j
print(sum)
答案 0 :(得分:0)
您可以计算所有n
且低于m
的自然数之和,作为梯形区域:
def sum_multiples(n, m):
d = (m - 1) // n
return (1 + d) * d // 2 * n
,因此{<1> 的时间复杂度可以通过计算3的所有倍数的总和来计算m
下3或5的所有倍数的总和加5的所有倍数的总和减去15的所有倍数的总和,即3和5的最低公分母:
def sum_3_5(m):
return sum_multiples(3, m) + sum_multiples(5, m) - sum_multiples(15, m)
为回答这个问题,sum_3_5(1000)
返回:
233168