python - 查找整个序列的数字总和的有效方法

标签 python algorithm

在下面的代码片段中,我找到区间 [a,b] 之间所有奇数的数字总和

def SumOfDigits(a, b):
    s = 0
    if a%2 == 0:
        a+=1
    if b%2 == 0:
        b-=1   
    for k in range(a,b+1,2):
        s+= sum(int(i) for i in list(str(k)))
    return s

是否有有效的方法来完成同样的任务? 导致明确公式的任何模式。

我确实在 https://oeis.org 中搜索过

最佳答案

避免与字符串相互转换的所有开销,直接使用数字本身:

def SumOfDigits(a, b):
    result = 0
    for i in range(a + (not a % 2), b + 1, 2):
        while i:
            result += i % 10
            i //= 10
    return result

关于python - 查找整个序列的数字总和的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36518154/

相关文章:

python - django中当前服务器的IP和端口

python - 为什么 while 在这里一直循环?有人可以解释吗?

python - 跨服务器分发代码的最佳方式是什么?

list - 稍微改变种子时稍微改变随机列表随机播放的输出

识别鼠标移动的算法

使用 Pandas 进行 Python 字典理解

python - 从 S3 Bucket 编辑 base.css 文件

algorithm - 在有向循环图中找到从源 s 到目标 f 的最长路径。假设不存在正权重循环

c++ - openMP for 循环增量语句处理

algorithm - 快速求解子集和