一道初等数论题

一道初等数论题

问题

解一次同余方程
(1) 3 x ≡ 5   ( m o d    7 ) 3x\equiv 5\,(\mod 7) 3x5(mod7)  (2) 103 x ≡ 57   ( m o d    211 ) 103x\equiv 57\,(\mod 211) 103x57(mod211)

解答

问题一是十分简单的因为显然 3 x ≡ 12 ≡ 5   ( m o d    7 ) 3x\equiv12\equiv5\,(\mod 7) 3x125(mod7),而 ( 3 , 7 ) = 1 (3,7)=1 (3,7)=1,所以可以除去3,即 x ≡ 4 ( m o d    7 ) x\equiv 4(\mod 7) x4(mod7).

而问题二就比问题一稍稍棘手.因为首先211和103都是比较大的质数,所以利用欧拉定理将其化为首1的方程是不现实的.那么我们当然考虑和问题一一样,通过将余数加上模数进行等价变形(即更换代表元)来将其化为首1的方程.可惜的是,这个数不是特别好找的.我们可以看以下的寻找过程
⋮ ( 103 , 57 + 3 × 211 ) = ( 103 , 690 ) = 1 ( 103 , 57 + 2 × 211 ) = ( 103 , 479 ) = 1 ( 103 , 57 + 1 × 211 ) = ( 103 , 268 ) = 1 ( 103 , 57 + 0 × 211 ) = ( 103 , 57 ) = 1 ( 103 , 57 − 1 × 211 ) = ( 103 , − 154 ) = 1 ( 103 , 57 − 2 × 211 ) = ( 103 , − 365 ) = 1 ( 103 , 57 − 3 × 211 ) = ( 103 , − 576 ) = 1 ⋮ \begin{array}{ccccc} &\vdots\\ (103,57+3\times211) &=& (103,690) &=& 1\\ (103,57+2\times211) &=& (103,479) &=& 1\\ (103,57+1\times211) &=& (103,268) &=& 1\\ (103,57+0\times211) &=& (103,57) &=& 1\\ (103,57-1\times211) &=& (103,-154) &=& 1\\ (103,57-2\times211) &=& (103,-365) &=& 1\\ (103,57-3\times211) &=& (103,-576) &=& 1\\ &\vdots \end{array} (103,57+3×211)(103,57+2×211)(103,57+1×211)(103,57+0×211)(103,571×211)(103,572×211)(103,573×211)=======(103,690)(103,479)(103,268)(103,57)(103,154)(103,365)(103,576)=======1111111
可以发现直接寻找是比较困难的,所以我们不妨使用带余除法来寻找代表元.即考虑方程 103 ∣ 57 + 211 a ′ 103\mid 57 + 211a' 10357+211a,或者将其写成
57 + 211 a ′ = 103 b ′ , a ′ , b ′ ∈ Z (1) 57+211a' = 103b',a',b'\in\mathbb{Z}\tag{1} 57+211a=103b,a,bZ(1)
这其实是一个一次不定方程,我们将其写成标准形式
211 a + 103 b = 57 , a , b ∈ Z 211a+103b=57,a,b\in\mathbb{Z} 211a+103b=57,a,bZ
由于 ( 211 , 103 ) = 1 ∣ 57 (211,103)=1\mid57 (211,103)=157,利用带余除法可以解出 a , b a,b a,b
211 = 103 × 2 + 5 103 = 5 × 20 + 3 5 = 3 × 1 + 2 3 = 2 × 1 + 1 \begin{array}{ccccccc} 211&=&103&\times&2&+&5\\ 103&=&5&\times&20&+&3\\ 5&=&3&\times&1&+&2\\ 3&=&2&\times&1&+&1 \end{array} 21110353====103532××××22011++++5321
从下往上回代可得到 a = − 41 × 57 = − 2366 , b = 84 × 57 = 4788 a=-41\times57=-2366,b=84\times57=4788 a=41×57=2366,b=84×57=4788.
4788就是我们要找的一个代表元,所以,
x ≡ 4788 ≡ 146 ( m o d    211 ) (2) x\equiv4788\equiv146(\mod 211) \tag{2} x4788146(mod211)(2)
从另一个角度看,如果将 ( 1 ) (1) (1)式写成
103 x = 211 q + 57 , x , q ∈ Z 103x = 211q + 57,x,q\in\mathbb{Z} 103x=211q+57,x,qZ
那么我们可以将此法更直接地理解为用定义改写 103 x ≡ 57   ( m o d    211 ) 103x\equiv 57\,(\mod 211) 103x57(mod211),然后利用带余除法求解.利用一次不定方程的解法可得到其所有解
{ x = 4788 + 211 t q = − 2366 + 103 t , t ∈ Z (3) \left\{ \begin{array}{l} x = 4788 + 211t\tag{3}\\ q = -2366 + 103t \end{array} \right. ,t\in\mathbb{Z} {x=4788+211tq=2366+103t,tZ(3)
事实上 ( 3 ) (3) (3) x x x的表达式与 ( 2 ) (2) (2)是等价的.

暴力点的话…

能暴力解决的事,为什么要动脑子呢?    ——我说的

其实这题完全可以编程暴力解决【滑稽】.显然在 [ 1 , 211 ] [1,211] [1,211]上必有一整数满足方程,所以我们的循环甚至都不需要写成定数的,直接让循环指标从1开始自增就行.

Talk is cheap, show me the code.

#include <stdio.h>

int main(){
    int i = 0;
    int state = 1;
    while(state){
        i += 1;
        if((103*i)%211==57) state = 0;
    }
    printf("%d", i);
}

输出为

146

整挺好,跟我算出来的一样.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、据库操作、用户权限管理等关键技术。 据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的据库设计文件。这些文件通常包括据库结构图、据表设计文档,以及示例据SQL脚本。用户可以通过这些文件快速搭建项目所需的据库环境,并了解各个据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、据库操作、用户权限管理等关键技术。 据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的据库设计文件。这些文件通常包括据库结构图、据表设计文档,以及示例据SQL脚本。用户可以通过这些文件快速搭建项目所需的据库环境,并了解各个据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、据库操作、用户权限管理等关键技术。 据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的据库设计文件。这些文件通常包括据库结构图、据表设计文档,以及示例据SQL脚本。用户可以通过这些文件快速搭建项目所需的据库环境,并了解各个据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值