如何不使用循环统计指定区间内某个数值的倍数数量
无循环统计区间内指定数值倍数个数实现方案
已知变量定义
a=10, b=20, c=3
实现逻辑
完全无需循环,直接通过数学公式计算即可,适配a、b大小顺序任意的场景:
- 先确定区间的上下界:取a、b的最小值为左边界
left,最大值为右边界right - 计算不大于右边界的c的正倍数总个数:
right // abs(c) - 计算小于左边界的c的正倍数总个数:
(left - 1) // abs(c) - 两个数值的差值就是区间内符合要求的总个数
注:若c为0无实际倍数意义,可根据业务需求返回0或抛出异常,示例默认返回0
Python代码实现
a, b, c = 10, 20, 3 left = min(a, b) right = max(a, b) if c == 0: res = 0 else: res = right // abs(c) - (left - 1) // abs(c) print(res)
效果验证
以示例输入为例:
- 不大于20的3的倍数有3、6、9、12、15、18,共6个
- 小于10的3的倍数有3、6、9,共3个
- 差值为
6-3=3,对应符合要求的数值12、15、18,和预期输出一致
内容的提问来源于stack exchange,提问作者user17051256
相关产品推荐
相关产品推荐

