没有循环到奇数的求和范围

Moh*_*ziz 0 python algorithm optimization performance

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

bur*_*alc 7

您可以利用算术级数中的求和来求和第一个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))
Run Code Online (Sandbox Code Playgroud)

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

参考:求和算术系列

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

if n % 2 == 0:
    n = n - 1 # to eliminate the case 10000 and find range 1-9999
Run Code Online (Sandbox Code Playgroud)