Python 和 奥数 -- 同余法求数值

扫码上面的二维码关注我的公众号!


视频教程:https://www.bilibili.com/video/av95752425/

今天为大家带来一道数论题。

题目:有一个大于1的整数,除45,59,101所得的 余数相同,求这个数。

中小学学生可在家长的陪读下一起学习。

解题思路:

本题是一道数论题,考察的是求公因数。

题目中虽然没有告诉我们,这个数除这三个数的余数是多少,但是已告知余数是相同的。那么,根据同余定理,45, 59, 101中任意两个数的差都能被这个数整除。

同余定理:设这个数是 x,除 45, 59, 101 所得的余数是 a,商分别是 k,l,m。

则45=k*x+a,59=l*x+a,101=m*x+a,且 k

所以59-45=(l-k)* x,101-59=(m-l)*x,101-45=(m-k)*x。

即14,42,56能被 x 整除。

解答:

依题意,59-45 = 14, 101-59 = 42, 101-45 = 56

根据同余定理,这个数能整除 14 和 42。

求14和42的最大公约数,(42,14)=14;

14=2*7,14的因数有 1,2,7,14。

又因为这个数比1大,所以这个数可能为 2 或 7 或 14。

—————————— Python 程序设计 ———————————


根据题意的原始 Python 编码如上图


根据奥数解题思路,优化后的 Python 编码如上图


———————————— 练习题 —————————————

一个大于1的自然数去除280,225,190时,

得余数分别为a,a+2,a+5,则这个自然数是多少?