博客
关于我
POJ 1006
阅读量:793 次
发布时间:2023-03-03

本文共 1732 字,大约阅读时间需要 5 分钟。

中国古代的求解一次同余式组的方法,被誉为中国剩余定理,是数论中的重要定理之一。最早的记录可以追溯到《孙子算经》中的“物不知数”问题:“今有物不知其数,三三数之余二,五五数之余三,七七数之余二,问物几何?”

在解这个问题时,关键数70、21、15各有什么妙用和性质呢?

首先,70是一个满足3除余1,同时又能被5和7整除的数。因此,70a会在3除时余a,在5和7除时则会被整除。同理,21是5除余1,同时又能被3和7整除的数,因此21b会在5除时余b,而在3和7除时会被整除。15则是一个7除余c,同时又能被3和5整除的数,因此15c会在7除时余c,而在3和5除时则会被整除。

将这些数相加,70a + 21b + 15c的结果将在3除时余a,在5除时余b,在7除时余c。因此,这个和可能是问题的一个解,但不一定是最小的正数解。为了找到最小的正数解,可以对结果减去105(即3×5×7=105),因为105是3、5、7的最小公倍数。通过多次减去105,可以得到最小的正数解。

例如,在题目中给出的三个条件是3、5、7。我们需要找到一个数x,使得:

  • x ≡ 2 mod 3
  • x ≡ 1 mod 5
  • x ≡ 1 mod 7

为了满足这些条件,我们可以分别处理每个模数对应的余数。首先,考虑35(5×7)的倍数,因为5和7的最小公倍数是35。我们需要找到一个数,使其在5和7除时分别余1和1。

将35乘以3得到105,这样105在5除时余0,在7除时余0,但我们需要余1。因此,我们可以将35乘以4,得到140,这样140在5除时余0,在7除时余0,但这样并不能满足余1的条件。于是,我们需要寻找另一个方法。

接下来,我们考虑3和5的最小公倍数是15。我们需要找到一个数,使其在3和5除时分别余1和1。将15乘以1得到15,在3除时余0,这不符合要求。将15乘以2得到30,这样在3除时余0,同样不符合。继续尝试,将15乘以4得到60,60在3除时余0,仍然不行。继续尝试,将15乘以5得到75,75在3除时余0,仍然不行。继续尝试,将15乘以7得到105,105在3除时余0,同样不行。继续尝试,将15乘以8得到120,120在3除时余0,仍然不行。继续尝试,将15乘以9得到135,135在3除时余0,仍然不行。继续尝试,将15乘以10得到150,150在3除时余0,同样不行。

看来我们需要寻找另一个方法来解决这个问题。我们可以尝试使用中国剩余定理,通过找到满足所有条件的最小正数。

首先,考虑模5和模7的条件:

  • x ≡ 1 mod 5
  • x ≡ 1 mod 7

我们可以设x = 5k + 1,其中k是一个整数。然后将x代入模7的条件:5k + 1 ≡ 1 mod 7 ⇒ 5k ≡ 0 mod 7 ⇒ k ≡ 0 mod 7

因此,k可以表示为7m,其中m是一个整数。因此,x = 5×7m + 1 = 35m + 1。

现在,我们将x代入模3的条件:35m + 1 ≡ 2 mod 3 ⇒ 35m ≡ 1 mod 3 ⇒ 35 ≡ 2 mod 3 ⇒ 2m ≡ 1 mod 3 ⇒ m ≡ 2 mod 3

因此,m可以表示为3n + 2,其中n是一个整数。因此,x = 35×(3n + 2) + 1 = 105n + 70 + 1 = 105n + 71。

因此,最小的正数解是当n=0时,x=71。

不过,在实际应用中,可能需要通过更简便的方法来寻找这些关键数。例如,在孙子问题中,使用关键数70、21、15来构造解。具体来说,70是满足3、5、7的某些余数条件的数,而21和15分别是满足其他余数条件的数。通过组合这些数,可以得到一个满足所有条件的解。

例如,70×2 + 21×3 + 15×2 = 140 + 63 + 30 = 233。然后,我们可以通过减去105的倍数来找到最小的正数解:233 - 2×105 = 233 - 210 = 23。

因此,最小的正数解是23。

总结来说,关键数70、21、15分别对应于满足不同模数条件的数,通过组合这些数,可以构造出一个满足所有条件的解。通过适当的加减105(即3×5×7),可以找到最小的正数解。

转载地址:http://nkxfk.baihongyu.com/

你可能感兴趣的文章
PHPCMS多文件上传和上传数量限制
查看>>
phpEnv的PHP集成环境
查看>>
PHPExcel导入导出 若在thinkPHP3.2中使用(无论实例还是静态调用(如new classname或classname::function)都必须加反斜杠,因3.2就命名空间,如/c...
查看>>
PHPMailer发送邮件
查看>>
phpmyadmin 安装
查看>>
phprpc简单使用
查看>>
phpStudy安装教程
查看>>
php上传文件找不到临时文件夹
查看>>
redis事务操作
查看>>
PHP中implode()和explode()
查看>>
php中使用ajax进行前后端json数据交互
查看>>
Redis事务和锁操作
查看>>
php中引入文件几种方式的区别
查看>>
PHP中把stdClass Object转array的几个方法
查看>>
PHP中有关正则表达式的函数集锦
查看>>
Redis 集群搭建详细指南
查看>>
php中的session用法
查看>>
Redis 限速器及问题
查看>>
php中高级基础知识点
查看>>
php中,如何将编译后的代码,反编译回去。
查看>>