如何在 0.1 秒内计算 Python 中非常大范围的总和?

问题描述 投票:0回答:3

我在 Python 中得到一个任务,计算 1 到 N 范围内的和,其中 N 可以达到 10**25,程序执行时间不超过 0.1 秒,我失败了,现在尝试了解它应该如何完成。最好为此使用 for 循环(任务中未明确说明,但已暗示)。

尝试了很多东西:从基本的 for 循环到

reduce(add, range(0, 10**25))
sum(range(1,10**25)
,但它们都不够快。在 0.1 秒内完成如此大的总和计算的有效方法是什么?

P.S 感谢您的所有回复,不知何故没有看到最简单的方法。

python sum range add
3个回答
3
投票

1
N
的整数之和是
N * (N + 1) / 2
.

n = 10 ** 25
res = n * (n + 1) // 2

0
投票

在练习中你应该使用数学,而不是蛮力。这是一个 O(1) 任务,而不是 O(N)。


0
投票

因为 1+2+...+n 有一个数学公式,所以这应该有效:

n = 10 ** 25
result = (n * (n + 1)) / 2
© www.soinside.com 2019 - 2024. All rights reserved.