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=70
a+21b+15
c。
21b和15
c都是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),那么3
4的倍数永远是2的倍数,找不到一个34的倍数满足模2得a。