首页 > 解决方案 > 没有循环对奇数范围求和

问题描述

有没有办法从 1 到 n 的奇数求和,但没有任何循环,如果没有办法,我如何通过快速算法创建这个以在少于 n 个循环中完成此任务。

标签: pythonalgorithmperformanceoptimization

解决方案


您可以利用算术级数中的求和来对第一个n奇数求和(而不是从0到的奇数n

a = 1 # from 1
n = 9999 # to n
d = 2 # and skip every even number
n = int((n - a) / d + 1) # locate the number of term for n
sum = int((n / 2) * (2 * a + (n - 1) * d))

时间复杂度:O(1),无循环

参考:对算术级数求和

编辑:以适应 even 的情况n,例如10000

if n % 2 == 0:
    n = n - 1 # to eliminate the case 10000 and find range 1-9999

推荐阅读