扫码上面的二维码关注我的公众号!
视频教程: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
即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 编码如下:
"""奥数题目:有一个大于 1 的整数,除 45、59、101 所得的余数相同,求这个数。"""
answers = [] # 设置空列表,用于保存相关答案
for x in range(2, 45+1): # 利用循环得到 2 到 45 的所有整数
for y in range(2, 59+1): # 循环得到 2 到 59 的所有整数
for z in range(2, 101+1): # 循环得到 2 到 101 的所有整数
if x == y == z and (45 % x == 59 % y == 101 % z):
answers.append(x)
print(answers)
根据奥数解题思路,优化后的 Python 编码如下:
# 根据同余定理,这个数能整除 14、42 和 56,# 求三个差值的最大公约数
greatest_common_divisor = min(59-45, 101-59, 101-45)
# 依题求三个差值的最大公约数的大于 1 的约数。
answers = []
for x in range(2, greatest_common_divisor+1):
if greatest_common_divisor % x == 0:
answers.append(x)
print(answers)
———————————— 练习题 —————————————
一个大于1的自然数去除280,225,190时,
得余数分别为a,a+2,a+5,则这个自然数是多少?
请扫码关注 CSDN 主页
请扫码关注 B站 主页
请扫码关注 知乎 主页