|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
孙子剩余定律的一个例子:
如果5个人一桌,多4个人。
如果7个人一桌,多6个人。
如果11个人一桌,正好。
如果3个人一桌,多2个人。
请问这屋里多少人
+++++++++++++++++++++++
计算过程如下:
从小数字条件开始算,比较方便。
1. 【条件1】
取【除3余2】 和 【除5余4】作为条件,
则必须满足 mod(3k+2,5)=4,求得:
k 除5余数
1 0
2 3
3 1
4 4
因此,得到符合同时满足【除3余2】和【除5余4】的数是:
【3*4+2=14】
这样以【3*5=15】为除数【14】为余数,
得到【3*5*k+14】这样的数必定都能满足条件1
因为,第一部分3*5*k分别被3或5整除,
而已求得的14能满足被3除余2以及被5除余4.
2.【条件2】
取【除15余14】 和 【除7余6】作为条件,
则必须满足 mod(15k+14,7)=6,求得k=6
(15除7每次余1,而14被7整除,所以k=余数=6)
即:15*6+14=104
因此,得到新的数是:
以【3*5*7=105】为除数【104】为余数,
得到【105*k+104】这样的数必定都能满足条件1和条件2
105能分别被3、5、7整除,
而104除3余2,除5余4,除7余6
3. 【条件3】
取【除105余104】 和 【除11余0】作为条件,
则必须满足 mod(105k+104,11)=0,求得k=1
(105除11每次余6,而104除11余5,所以k=1即可满足)
即有:105*1+104=209
最后209就是答案了。
+++++++++++++++++++++++
解题过程编写为VBA自定义函数,则有:
-
- Function y0(n1, r1, n2, r2)
- If r2 >= n2 Then y0 = "r2>=n2 Err !": Exit Function
- If n1 = n2 Then If r1 = r2 Then y0 = n1 + r1 Else y0 = "r1<>r2 Err !": Exit Function
- If r1 = r2 Then y0 = n1 * n2 + r1
-
- If n1 < n2 Then 'Let n1>n2 = True
- t = n1: n1 = n2: n2 = t
- t = r1: r1 = r2: r2 = t
- End If
-
- s = n1 Mod n2
- t = IIf(r1 < n2, r1, r1 Mod n2)
- t = r2 - t + IIf(r2 < t, n2, 0)
- For k = 0 To n2
- 'If s * k Mod n2 = t Then Exit For
- If s * k - Int(s * k / n2) * n2 = t Then Exit For
- Next
- y0 = n1 * k + r1
-
- End Function
复制代码
请看附件: |
|