孙子定理和“物不知数”问题

孙子定理和“物不知数”问题

孙子定理,也称为中国剩余定理或中国余数定理。孙子定理是中国古代求解一次同余式组(见同余)的方法。此定理,在公元5-6世纪的中国南北朝时期的数学家孙子提出的“物不知数”问题可以被视为中国剩余定理的一个应用实例。

《孙子算经》卷下第二十六题,叫做“物不知数”问题,原文如下:

有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?即,一个整数除以三余二,除以五余三,除以七余二,求这个整数。

宋朝数学家秦九韶于1247年《数书九章》卷一、二《大衍类》对“物不知数”问题做出了完整系统的解答。

解一

采用通用的方法:逐步满足法

七七数之剩二即除以7余2的数可以写成7n+2,从小到大排列:9,16,23,31,……

然后从小到大找除以3余2的(三三数之剩二)和以5余3的(五五数之剩三)的数:发现最小的是23.

所以23就是所求的数。

先满足一个条件,再满足另一个条件,所以称之为“逐步满足法”。

解二

可以使用孙子定理(中国剩余定理)来解决这个问题

先简要介绍中国剩余定理,下面用现代数学的语言来说明。

假设有如下的一组线性同余方程:

x ≡ a1 (mod m1)

x ≡ a2 (mod m2)

x ≡ an (mod mn)

其中,m1, m2, …, mn是两两互质的正整数,a1, a2, …, an是整数,求解这样的一组线性同余方程的一般公式如下:

x = (Σ(ai × Mi × ti)) mod M

其中,M = m1 × m2 × … × mn,Mi = M ÷ mi,ti是Mi对mi的模逆元,即满足(Mi × ti) ≡ 1 (mod mi)的整数。

模逆元也称为模反元素,假设有一个整数a和一个模m,如果存在一个整数b,使得ab ≡ 1 (mod m),那么我们就称b是a关于模m的模逆元或者模反元素。

关于孙子定理详情可见孙子定理_百度百科

下面使用孙子定理来解决这个问题

设这个整数为x。根据题目的条件,我们可以列出以下同余方程组:

x ≡ 2 (mod 3)

x ≡ 3 (mod 5)

x ≡ 2 (mod 7)

在这个问题中,a1, a2, a3分别代表的是每个同余方程的模余数,即a1 = 2, a2 = 3, a3 = 2。

首先计算所有模数的乘积:M = 3 × 5 × 7 = 105

然后,为每个方程计算Mi,即模数乘积除以对应的模数:

M1 = M ÷ 3 = 35

M2 = M ÷ 5 = 21

M3 = M ÷ 7 = 15

接下来,我们需要计算每一个模逆元ti 即满足(Mi × ti) ≡ 1 (mod mi)的整数

对于M1,我们有 (35 × 2) mod 3 = 1,所以t1 = 2

对于M2,我们有 (21 × 1) mod 5 = 1,所以t2 = 1

对于M3,我们有 (15 × 1) mod 5 = 1,所以t3 = 1

【注:具体说来,对于M1=35,我们需要找到一个数, (35 × t1) mod 3 = 1。通过尝试,我们发现t1 = 2可以满足这个等式,因为 (35 × 2) mod 3 = 70 mod 3 = 1。所以在这个情况下,我们说2就是35关于模3的模逆元。

在更复杂的问题中,尝试所有可能的整数可能是不现实的。这时,我们可以使用扩展欧几里得算法来高效地计算模逆元,这是一个更高级的主题。】

最后,我们将计算得到的结果带入到中国剩余定理的公式中:

x = (a1 × M1 × t1 + a2 × M2 × t2 + a3 × M3 × t3) mod M

= (2 × 35 × 2 + 3 × 21 × 1 + 2 × 15 × 1) (mod 105)

= (140 + 63 + 30) (mod 105)

= 23 (mod 105)

因此,物的数目为23。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/669417.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++类与对象(下)

前言:哈喽小伙伴们,这篇文章我们将继续分享类与对象的剩余知识。 目录 一.const修饰成员函数 二.再谈构造函数 三.友元 1.友元函数 2.友元类 总结 一.const修饰成员函数 我们都知道const是一个将变量定义为静态的关键字,使其不能被修改…

C语言之自定义类型:结构体

目录 1. 结构体类型的声明结构体回顾结构的声明 2. 结构体变量的创建和初始化结构体的特殊声明结构体的自引用 3. 结构体内存对齐对齐规则对齐规则练习1对齐规则练习2对齐规则练习3对齐规则练习4 为什么存在内存对齐offsetof - 计算结构体成员相较于起始位置的偏移量修改默认对…

道可云元宇宙每日资讯|北京:推进元宇宙在智慧城市应用

道可云元宇宙每日简报(2024年2月2日)讯,今日元宇宙新鲜事有: 石狮市检察院“元宇宙智慧展馆”正式启用 为深入实施数字检察战略,主动探索元宇宙技术在未成年人检察、公益诉讼检察等方面的应用,打造集案件…

Qt应用软件【协议篇】MQTT协议介绍

文章目录 MQTT简介QT中MQTT的源码什么是 MQTT?MQTT 的工作原理MQTT 的工作流程MQTT 的应用场景智能家居工业物联网(IIoT)车联网环境监测医疗健康物流与供应链智能能源公共安全基于传输层TCP协议上的MQTT应用层协议

Java学习笔记2024/2/4

1. 方法(接2024/2/3笔记) 1.4 方法的内存 package com.angus.method.theMemoryOfMethod_4;public class note {public static void main(String[] args) {//方法的内存 ->讲到内存就要联系内存图来理解//将学习以下3种内存//1.方法调用的基本内存原理//就是进栈出栈//先进…

协同办公的2024开年大战,打的就是“超级助理”

文|智能相对论 作者|沈浪 开年,腾讯发布了一份报告《影响2024年的十大科技应用趋势》。其中提到,从大脑到Agent,大模型从CoPilot副驾,走向主驾驶。在不久的将来,任何上网的人都将能够拥有由人工智能驱动的个人助手&a…

Java学习-内部类

内部类概述 1.成员内部类 注意: 2.静态内部类 3.局部内部类(看看就行) 4.匿名内部类 应用场景:通常作为一个参数传给方法 Eg.小猫和小狗都参加游泳比赛

【算法】{画决策树 + dfs + 递归 + 回溯 + 剪枝} 解决排列、子集问题(C++)

文章目录 1. 前言2. 算法例题 理解思路、代码46.全排列78.子集 3. 算法题练习1863.找出所有子集的异或总和再求和47.全排列II17.电话号码的字母组合 1. 前言 dfs问题 我们已经学过,对于排列、子集类的问题,一般可以想到暴力枚举,但此类问题用…

单片机的50个电路

单片机 电源 声音模块 收音机 485 蓝牙 光耦 can 光敏电阻 单片机 矩阵 单片机电路 时钟 ADC 接口电路 红外发射 显示模块 红外接收 蜂鸣器驱动 流水灯 usb供电 烧录电路 数码管 EEPROM LCD1602电路 数码管 max485 红外开关 译码器 移位寄存器 步进电机控制 复位电路 下载电路 …

基于springboot智慧养老平台源码和论文

首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项…

挑战!贪吃蛇小游戏的实现(1)

引言 相信大家都玩过贪吃蛇这个游戏! 玩家控制一个不断移动的蛇形角色,在一个封闭空间内移动。随着时间推进,这个蛇形角色会逐渐增长,通常是通过吞食屏幕上出现的物品(如点或者其他标志)来实现。每当贪吃…

《低功耗方法学》翻译——附录B:UPF命令语法

附录B:UPF命令语法 本章介绍了文本中引用的所选UPF命令的语法。 节选自“统一电源格式(UPF)标准,1.0版”,经该Accellera许可复制。版权所有:(c)2006-2007。Accellera不声明或代表摘录材料的准确性或内容&…

Leetcode 3031. Minimum Time to Revert Word to Initial State II

Leetcode 3031. Minimum Time to Revert Word to Initial State II 1. 解题思路2. 代码实现 题目链接:3031. Minimum Time to Revert Word to Initial State II 1. 解题思路 这一题就是一个z算法的题目,算是比较套路的题目了。 关于z算法&#xff0c…

monaco-editor布局篇(二)-自动换行

monaco-editor的换行方式,主要分为3种情况: 不换行按照编辑器宽度换行按照制定列数换行 主要受wordwrap和wordwrapcolumn控制,具体如下: 取值含义off不换行,会一直滚动on换行,文本将在视区宽度内自动换行…

2024年Java架构篇之数据结构与算法面试题

2024年Java实战面试题_java 5 年 面试-CSDN博客 2024年Java架构篇之数据结构与算法面试题 1、判断一个数是否是2的N次方,比如2、4、8、16是6、10不是 1:01、2:10、3:011、4:100、7:0111、8:1000、15:01111、16:10000 if(n&(n-1) 0) 那么n就是2的次方 n > 1

Linux命令:traceroute命令

目录 traceroute1、简介2、探测原理3、traceroute说明4、实例设置每跳探测数设置跳数探测包使用的基本UDP端口设置6789把对外发探测包的等待响应时间设置为3秒 总结 traceroute 1、简介 traceroute的主要功能是跟踪从IP网络发送到指定主机经过的网关的工具。它利用IP协议的生…

5 分钟让你了解什么是搜索引擎

文章目录 搜索引擎概述基于业务模式分类垂直搜索(垂搜)通用搜索(通搜)本地搜索引擎 基于技术实现分类基于关键词的搜索引擎(Keyword-based Search Engine)语义搜索引擎(Semantic Search Engine&…

幻兽帕鲁mac可以玩吗?

《幻兽帕鲁》(英文:Palworld)是一款近期在 Steam 爆红的动作冒险生存游戏,游戏设置在一个居住着「帕鲁」的开放世界中,玩家可以战斗并捕捉帕鲁,也能用它们来建造基地、骑乘和战斗。 不过目前《幻兽帕鲁》仅…

【Java万花筒】编织数字音符:Java多媒体魔法

Java多媒体处理大全:解锁音视频领域的绝佳工具库 前言 在当今数字化时代,多媒体处理已经成为Java开发者必不可少的一项技能。无论是开发多媒体应用、实时流媒体处理,还是进行视频编辑、音频转码,Java提供了丰富的库和工具。本文…

C语言内存函数:memcpy、memcat、memmove介绍和模拟实现(实用性高,建议三连收藏)

目录 1.memcpy函数 1.1函数介绍 1.2函数示范使用 1.3函数的模拟实现 1.4补充 2.memmove函数 2.1函数介绍 2.2函数的使用示范 2.3函数的模拟实现 3.memcmp(内存比较函数) 3.1函数介绍 3.2函数的示范使用,有趣的例子 4.函数补充memset(内存…