韩信点兵问题(中国剩余定理)

2019-04-13 13:12发布

class="markdown_views prism-atelier-sulphurpool-light">

韩信点兵问题(中国剩余定理)

标签: 数论
问题描述:假设有x个数,模3得a,模5得b,模7得c,求x的最小值。 首先
  • 70是5,7(除了3以外其他用作取模的数的乘积)的公倍数且是最小的模3得1的数。(572)
  • 21是3,7的公倍数且是最小的模5得1的数。(371)
  • 15是3,5的公倍数且是最小的模7得1的数。(351)
那么:
  • 702就是最小的满足5,7公倍数且模3得2的数,由于70模3得1,那么显然702模3就是2了,那么推广下去,70*a模3就是a了。
  • 其他两个同理

那么:x=70a+21b+15c。
21
b和15c都是3的倍数,对余数没有贡献,只有70a对余数有贡献 ,其他两项同理可得。
3,5,7的最小公倍数是105,也就是说105是一个周期x=(70a+21b+15c)+k105 (k为整数),最小正整数解就是x=(70a+21b+15*c)%105;

剩余定理成立的条件:

用来做模数的数(也就是3,5,7)两两互质。倘若不互质,假设是(2,3,4),那么34的倍数永远是2的倍数,找不到一个34的倍数满足模2得a。