相传汉高祖刘邦问大将军韩信统御兵士多少,韩信答曰,每3人一列余2人、5人一列余3人、7人一列余2人。刘邦茫然而不知其数,你知其数吗?
图形化问题

公式化问题
| 总人数(被除数) | 人/列(除数) | 列(未知数) | 余(余数) | 表达式 |
|---|---|---|---|---|
| ? | 3 | x | 2 | 3x+2 |
| 5 | y | 3 | 5y+3 | |
| 7 | z | 2 | 7z+2 | |
| 3x + 2 = 5y + 3 = 7z + 2 |
采用枚举法,初步探索此公式可能的解:

.
.
.
编程算法实现
def caculate_soldiers(limit = 100):amount = []soldiers = limitwhile soldiers > 0:if soldiers%3 == 2 and soldiers%5 == 3 and soldiers%7 == 2:amount.append(soldiers)soldiers -= 1print('\nWhen total number limit to %d soldiers count:\n' % limit)index = 0text = ''while index < len(amount):text += str(amount[index]) + '\t\t'if (index+1) % 5 == 0:print(text)text = ''index += 1print(text + '\n')
不同的士兵总数
执行此函数:
#!/usr/bin/env python# encoding: utf-8if __name__ == '__main__':limits = [100, 1000, 10000]for limit in limits:caculate_soldiers(limit)
输出结果
When total number limit to 100 soldiers count:23When total number limit to 1000 soldiers count:968 863 758 653 548443 338 233 128 23
