如何统计给定区间内各位数字之和能被3整除的数字数量
统计指定区间内各位数字之和可被3整除的数字总数
示例说明:若给定区间为139到141,区间内包含的数字为139、140和141,三者的各位数字之和分别为13、5、6,其中仅141的各位数字之和能被3整除,符合统计要求,最终统计结果为1。
实现方案
方案1:暴力遍历法(适用小范围区间)
思路:遍历区间内所有整数,逐个计算各位数字之和,判断是否满足整除要求后计数。
参考Python实现:
def count_divisible_by_3(start: int, end: int) -> int: count = 0 for num in range(start, end + 1): digit_sum = sum(int(d) for d in str(num)) if digit_sum % 3 == 0: count += 1 return count # 测试示例 print(count_divisible_by_3(139, 141)) # 输出 1
方案2:O(1)高效计算法(适用任意大小区间)
- 核心数学依据:任意整数模3的结果,与该整数所有位数字之和模3的结果完全相等。因此「各位数字之和可被3整除」等价于「数字本身可被3整除」,无需单独计算各位和。
- 计算公式:区间
[start, end]内符合要求的数字总数 =end // 3 - (start - 1) // 3
参考Python实现:
def count_divisible_by_3_fast(start: int, end: int) -> int: return end // 3 - (start - 1) // 3 # 测试示例 print(count_divisible_by_3_fast(139, 141)) # 输出 1
内容的提问来源于stack exchange,提问作者Akshat kant
相关产品推荐
相关产品推荐

