不确定我是否应该在math.stackexchange上发布这个,但它包含更多编程,所以我在这里发布了它.
这个问题看起来很简单,但我现在坐在这里至少一个小时,现在还没弄清楚.我尝试过不同的解决方案,并为它读取数学公式等但在编码时它不会给我正确的答案!我为它做了两个不同的解决方案,它们都给了我错误的答案.第一个解决方案给了我265334,而第二个解决方案给了我232169.答案是233168,所以第二个解决方案更接近.
这是我的代码.有什么想法有什么不对吗?
nums = [3, 5]
max = 999
result = 0
for num in nums:
for i in range(1,max):
if num*i < max:
result += num*i
print result
result = 0
for i in range(0,max):
if i%3 == 0 or i%5 == 0:
result += i
print result
Run Code Online (Sandbox Code Playgroud)
zee*_*kay 16
你太复杂了.您只需要一个3或5的倍数的数字列表,您可以通过列表理解轻松获得:
>>> [i for i in range(1000) if i % 3 == 0 or i % 5 == 0]
Run Code Online (Sandbox Code Playgroud)
然后sum
用来得到总数:
>>> sum([i for i in range(1000) if i % 3 == 0 or i % 5 == 0])
<<< 233168
Run Code Online (Sandbox Code Playgroud)
或者甚至更好地使用生成器表达式:
>>> sum(i for i in range(1000) if i % 3 == 0 or i % 5 == 0)
Run Code Online (Sandbox Code Playgroud)
甚至更好(Exelian提供):
>>> sum(set(list(range(0, 1000, 3)) + list(range(0, 1000, 5))))
Run Code Online (Sandbox Code Playgroud)