检查 Python 中数字偶数位数字的乘积是否能被奇数位数字的和整除


假设我们有一个数字 n,我们需要检查 n 的偶数位数字的乘积是否能被 n 的奇数位数字的和整除。位数从右到左计数,最右边的位数为第 1 位。

例如,如果输入 n = 59361,则输出为 True,因为 (1*3*5) = (6+9)。

为了解决这个问题,我们将遵循以下步骤:

  • digit_count := 给定数字 n 的位数
  • total := 0, prod := 1
  • 当 n > 0 时,执行以下操作:
    • 如果 digit_count 为偶数,则
      • prod := prod * n 的最后一位数字
    • 否则,
      • total := total + n 的最后一位数字
    • n := (n / 10) 的商
    • digit_count := digit_count - 1
  • 如果 prod 能被 total 整除,则
    • 返回 True
  • 返回 False

让我们来看下面的实现代码,以便更好地理解:

示例代码

在线演示

from math import log10

def solve(n):
   digit_count = int(log10(n))+1
   total = 0
   prod = 1
   while n > 0 :
      if digit_count % 2 == 0 :
         prod *= n % 10
      else:
         total += n % 10
        
      n = n // 10
      digit_count -= 1
 
   if prod % total == 0:
      return True
   return False
   
n = 59361
print(solve(n))

输入

59361

输出

True

更新于:2021年1月16日

491 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告