You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何创建带条件的range?高效统计可被11整除的数

如何高效统计大范围内可被11整除的数字数量?

Python原生的range语法本身不支持直接添加条件过滤,但你完全不需要生成整个序列来解决这个问题——用数学公式就能瞬间算出结果,这才是处理超大范围数值统计的最优方案。

核心思路:数学计算替代遍历

统计[start, end)范围内可被11整除的数的数量,只需要三步:

  1. 找到范围内第一个大于等于start的11的倍数
  2. 找到范围内最后一个小于等于end-1的11的倍数(因为range是左闭右开)
  3. 用公式(last - first) // 11 + 1计算总数(如果第一个倍数大于范围上限,结果为0)

对应代码实现:

start = 101
end = 9999999999999999999999999999999999999999999

# 计算第一个>=start的11的倍数
first = ((start + 10) // 11) * 11
# 计算最后一个<=end-1的11的倍数(因为range是左闭右开)
last = ((end - 1) // 11) * 11

count = 0
if first <= last:
    count = (last - first) // 11 + 1

print(count)

如果需要迭代这些数(而非仅统计数量)

如果你需要逐个处理这些可被11整除的数,不要生成整个列表,用生成器按需生成即可,内存占用几乎为0:

def divisible_by_11(start, end):
    first = ((start + 10) // 11) * 11
    last = ((end - 1) // 11) * 11
    if first > last:
        return
    yield from range(first, last + 1, 11)

# 示例:遍历输出部分数值
for num in divisible_by_11(101, 200):
    print(num)

这种方式既避免了超大序列的内存占用,又能高效获取目标数值,比直接遍历range或用numpy生成数组靠谱得多。

内容的提问来源于stack exchange,提问作者Alex Nikitin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 21:36:26