余数和问题(编程启蒙)

it2025-07-13  1

一个两位数,分别除以7,8,9,余数和为20,求这个两位数

方法一:数学推导

7的余数为1,2,3,4,5,68的余数为1,2,3,4,5,6,79的余数为1,2,3,4,5,6,7,8

将余数和20÷3=6……2(因为是3数之和),可以推论说,余数的平均数是比6大一点,但小于7,因为3×7=21>20

∵最大的余数是8,比6大2

∴最小余数不应该小于5

方案1:5,7,8

方案2:6,6,8

方案3:6,7,7

三个方案进行排除

方案1:7对应8,8对应9,所以取8和9最小公倍数72-1=71与7的余数是1,∴排除方案1

(PS:公倍数-1余数就比两个乘数小1的余数,XX÷8=X……7,又要YY÷9=Y……8,就只有72-1=71÷8=8……7,71÷9=7……8)

方案2: 8对应9,6对应7,所以取7和9最小公倍数63-1=62与8的余数是6,∴这个选项就是对的,62就是取的值

方案3: 7对应8,6对应7,所以取7和8最小公倍数56-1=55与9的余数是1,∴排除方案3

方法二:(程序代码穷举法)

这里利用python3

for i in range(10,99): #取值2位数 x = i%7 #分别与7,8,9取余 y = i%8 z = i%9 if x+y+z == 20: #如果余数和为20 print(i) #打印这个两位数 else: pass

运算结果

如果三位数呢?

for i in range(100,999): x = i%7 y = i%8 z = i%9 if x+y+z == 20: print(i) else: pass

 运算结果

最新回复(0)