python - 如何在 Python 中求 1000 以下的所有 3 或 5 的倍数之和?

标签 python algorithm

不确定我是否应该将它发布到 math.stackexchange 上,但它包含更多编程,所以我将它发布在这里。

这个问题看起来很简单,但我已经坐在这里至少一个小时了,现在还没有弄清楚。我尝试了不同的解决方案,并阅读了它的数学公式等,但在编码时它不会给我正确的答案!我为此做了两种不同的解决方案,但都给了我错误的答案。第一个解决方案给了我 265334,而第二个给了我 232169。答案是 233168,所以第二个解决方案更接近。

我应该提到这是来自 Project Euler, the first one 的问题准确地说。

这是我的代码。有什么问题吗?

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

最佳答案

你把事情搞得太复杂了。您只需要一个 3 或 5 的倍数的数字列表,您可以使用 list comprehension 轻松获得这些数字。 :

>>> [i for i in range(1000) if i % 3 == 0 or i % 5 == 0]

然后使用sum得到总数:

>>> sum([i for i in range(1000) if i % 3 == 0 or i % 5 == 0])
<<< 233168

或者更好地使用 generator expression相反:

>>> sum(i for i in range(1000) if i % 3 == 0 or i % 5 == 0)

甚至更好更好(由 Exelian 提供):

>>> sum(set(list(range(0, 1000, 3)) + list(range(0, 1000, 5))))

关于python - 如何在 Python 中求 1000 以下的所有 3 或 5 的倍数之和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5930300/

相关文章:

python - 背景图片未显示在 Django 网站上

c - 递归 C 函数

python - 在处理 python 列表分配时最小化内存消耗

基于多位信息确定最可能地理位置的算法

algorithm - 纯 Knuth/Fisher-Yates 在 haskell 中洗牌

python - 记录插入的次数与运行模型文件的次数一样多

python-pptx 库 : Slide Masters of different Powerpoint templates are of different order (index)

python - Django:保存相关对象后执行操作

Python Tkinter : obtain tree node information

数组元素特定排列的算法(通过定期采样进行并行排序)[C++]