python - 没有循环对奇数范围求和
问题描述
有没有办法从 1 到 n 的奇数求和,但没有任何循环,如果没有办法,我如何通过快速算法创建这个以在少于 n 个循环中完成此任务。
解决方案
您可以利用算术级数中的求和来对第一个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
推荐阅读
- python - 检查数据并返回想要的值
- arduino - 只能检测到两个 HC-06 蓝牙模块之一
- python - conftest python文件错误有解决办法吗
- algorithm - 合并/压缩任意整数列表
- r - 尝试在 R 中运行 GA,在 if (any(x < 0)) { 中出现错误:需要 TRUE/FALSE 的缺失值
- android - 如何在弹出窗口中显示 android 首选项活动?
- php - 如何在分页对象上使用 ->unique() 来删除 laravel 中的所有重复项
- arrays - 如何比较枚举数组值和控制台输入?
- flutter - 如何将图像从base64字符串保存到flutter中的文件?
- c++ - if-else/while 循环的无限输出?