如何使用Python求解三单数字正整数变量方程的所有整数解
解题思路
你要解的问题约束范围很小(三个变量都是1~9的正整数),最适合入门初学者理解的方法是暴力枚举法:遍历x、y、z所有可能的取值,逐一校验是否满足等式要求,符合条件的就保存为解。
你也可以先对原等式做简化,减少遍历的层数:
原等式 10*x + y = 2*x + 2*y + z 移项后可得 z = 8*x - y,只要保证计算得到的z是1~9的正整数即可,不需要额外遍历z。
实现代码
基础暴力枚举版(最易理解)
# 初始化列表存储所有解 solutions = [] # 遍历所有1位正整数取值:1到9 for x in range(1, 10): for y in range(1, 10): for z in range(1, 10): # 校验是否满足等式 if 10 * x + y == 2 * x + 2 * y + z: solutions.append([x, y, z]) # 打印所有结果 print("所有满足条件的[x,y,z]组合:") for sol in solutions: print(sol)
简化版(减少一层循环)
solutions = [] for x in range(1, 10): for y in range(1, 10): z = 8 * x - y # 校验z是否符合1位正整数的要求 if 1 <= z <= 9: solutions.append([x, y, z]) print("所有满足条件的[x,y,z]组合:") for sol in solutions: print(sol)
运行结果
两段代码运行后得到的结果完全一致,所有符合条件的解如下:
- [1, 1, 7]
- [1, 2, 6]
- [1, 3, 5]
- [1, 4, 4]
- [1, 5, 3]
- [1, 6, 2]
- [1, 7, 1]
- [2, 7, 9]
- [2, 8, 8]
- [2, 9, 7]
内容的提问来源于stack exchange,提问作者Mike N
相关产品推荐
相关产品推荐

