重学数论1:不定方程的引入

研究的对象:不定方程

文章目录

    • 研究的对象:不定方程
        • 不定方程引入:
        • 裴蜀定理证明:
          • 欧几里得算法证明:
          • 充分性证明:
          • 必要性证明:
        • 战术总结:

不定方程引入:

不定方程,又称丢番图方程,定义为:未知数为整数,系数也为整数的多项式等式。

形如 a 1 x 1 b 1 + a 2 x 2 b 2 + . . . + a n x n b n = c a_1x_1^{b_1} + a_2x_2^{b_2}+...+a_nx_n^{b_n} =c a1x1b1+a2x2b2+...+anxnbn=c

如果我们能找到一组整数解: x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn,我们就说这个方程有解。

但是我们并不研究不定方程的一般式,而是研究其特殊的形式,即一次不定方程:

a 1 x 1 + a 2 x 2 + . . . + a n x n = c a_1x_1 + a_2x_2+...+a_nx_n =c a1x1+a2x2+...+anxn=c

这个一次不定方程有解的充要条件是:

g c d ( a 1 , a 2 , . . , a m ) ∣ c gcd(a_1,a_2,..,a_m)|c gcd(a1,a2,..,am)c (即c为这n个数的倍数的时候,该一次不定方程有解)

这个推论是由二元一次不定方程有解的情况归纳而来:

即:
对于二元一次不定方程: a x + b y = c ax+by=c ax+by=c

此方程有解的充要条件是 : g c d ( a , b ) ∣ c gcd(a,b)|c gcd(a,b)c

这个结论是裴蜀定理的证明:下面将引出裴蜀定理。

裴蜀定理与不定方程的解有什么关系??

裴蜀定理给出:

对于任何整数 a , b , m a,b,m abm,关于未知数 x , y x,y x,y 的一元二次不定方程 a x + b y = m ax+by = m ax+by=m

此方程有解的充要条件 g c d ( a , b ) ∣ m gcd(a,b)|m gcd(a,b)m,由于只给了一个不定方程,所以整数解有无穷多个,每一组(x,y)都被称为裴蜀数


裴蜀定理证明:

由于是任意整数 a , b a,b a,b

所以我们先考虑0的情况:

1、当 a = 0 a = 0 a=0

该不定方程为: b y = m by = m by=m , 此方程有整数解,当且仅当 b   ∣   m b\:|\:m bm​ 。

可以写成 g c d ( 0 , b ) ∣ m gcd(0,b)|m gcd(0,b)m

写到这里突然有个想法, g c d ( 0 , b ) gcd(0,b) gcd(0,b)​ 这样的写法是合法的吗?

公约数的定义:如果有一个数 d d d, 对于 a 1 , a 2 , a 3 , . . . , a n a_1,a_2,a_3,...,a_n a1,a2,a3,...,an,都有 d ∣ a i , i ∈ [ 1 , n ] d|a_i,i\in[1,n] dai,i[1,n]

这样的数就被称为这些数的公约数。

a 1 , a 2 , a 3 , . . . , a n a_1,a_2,a_3,...,a_n a1,a2,a3,...,an的所有公约数放入集合 D D D中, D = { d ; d ∣ ( a 1 , a 2 , a 3 , . . . a n ) } D=\lbrace d;d|(a_1,a_2,a_3,...a_n)\rbrace D={d;d(a1,a2,a3,...an)}

最大公约数gcd的定义是: d m a x ∈ D d_{max}\in D dmaxD,使得 ∀ d ∣ d m a x \forall d|d_{max} ddmax,其中 d m a x d_{max} dmax被称为 g c d gcd gcd

0 0 0能被任意非 0 0 0数整除, b b b最大只能被 b b b整除。

当只要求 2 2 2个整数的最大公约数的时候,有一方为 0 0 0,那么它们的最大公因数就是另一个非零数本身。


都讲到这里了,顺便在写一下欧几里得算法的证明:

欧几里得算法证明:

考虑 g c d ( a , b ) = g c d ( b , a   m o d   b ) gcd(a,b) = gcd(b,a\:mod\:b) gcd(a,b)=gcd(b,amodb) 的证明:(面向结果证明)

任意一个整数可以写成带余除法(因为要用到 a   m o d   b a\:mod\:b amodb 的形式,所以将 a a a写成关于 b b b的带余除法: a = k b + c a = kb+c a=kb+c , c = a   m o d   b c = a \:mod \:b c=amodb 并约定 ( b ≠ 0 ) (b\neq0) (b=0)

d d d a , b a,b a,b的最大公约数。

有: d ∣ a ,   d ∣ b d|a ,\: d|b da,db。​

两边同时除以d: a d = k b d + c d \frac{a}{d} = k\frac{b}{d}+\frac{c}{d} da=kdb+dc

由于 a d , b d \frac{a}{d},\frac{b}{d} da,db都是整数,所以 c d \frac{c}{d} dc也是一个整数。

这说明 d ∣ c d|c dc , 这说明 d d d ( a , b , c ) (a,b,c) (a,b,c)​的最大公约数。

所以得到了最终的转移式子: g c d ( a , b ) = g c d ( b , c ) gcd(a,b) = gcd(b,c) gcd(a,b)=gcd(b,c)

这个证明过程告诉我们,不要忽视整数这个性质


2、当 b = 0 b = 0 b=0 的时候,这与 a = 0 a = 0 a=0 的计算过程等价,结论也等价,所以不过多赘述。

3、下面讨论 a ≠ 0 , b ≠ 0 a\neq0,b\neq0 a=0,b=0 的情况:

再次重申我们要证明的是什么?(有时候写着写着忘记要干嘛了)

证明: a x + b y = c ax + by = c ax+by=c 有整数解 ( x , y ) ⇔ g c d ( a , b ) ∣ c (x,y)\Leftrightarrow gcd(a,b)|c (x,y)gcd(a,b)c


充分性证明:

证明充分性,即证明: a x + b y = c ⇒ g c d ( a , b ) ∣ c ax+by=c \Rightarrow gcd(a,b)|c ax+by=cgcd(a,b)c

假设 a x + b y = c ax+by=c ax+by=c有解。

A = { a x + b y ; ( x , y ) ∈ Z 2 } A = \lbrace ax+by ; (x,y)\in \Z^2 \rbrace A={ax+by;(x,y)Z2}​ ​

不妨设 c 0 c_0 c0 A A A的最小正整数元素: a x 0 + b y 0 = c ax_0+by_0=c ax0+by0=c,其中 c c c表示A的任意一个正整数元素: a x + b y = c ax+by=c ax+by=c

c c c c 0 c_0 c0的带余除法: c = q c 0 + r c = qc_0 + r c=qc0+r 0 ≤ r < c 0 0 \leq r< c_0 0r<c0

代入原式: a x + b y = q ( a x 0 + b y 0 ) + r ax+by = q(ax_0+by_0) + r ax+by=q(ax0+by0)+r

r = a ( x − q x 0 ) + b ( y − q y 0 ) r = a(x-qx_0) + b(y - qy_0) r=a(xqx0)+b(yqy0) ,显然满足 r ∈ A r\in A rA

∵ \because 0 ≤ r < c 0 0\leq r< c_0 0r<c0 ,而 c 0 c_0 c0 A A A中的最小正元素。

∴ \therefore r r r 不是正元素, 即 r = 0 r=0 r=0,所以 c c c c 0 c_0 c0的带余除法为: c = q c 0 c=qc_0 c=qc0

也就是说 A A A中任意一个正元素 c c c,都存在 c 0 ∣ c c_0|c c0c

∵ a x + b y = c , ∀ c ∈ A , c 0 ∣ c \because ax+by=c , \forall c\in A ,c_0|c ax+by=ccA,c0c

∴ \therefore , c 0 ∣ a x c_0 |ax c0ax , c 0 ∣ b y c_0|by c0by

∵ x , y ∈ Z \because x,y\in\Z x,yZ

∴ c 0 ∣ a , c 0 ∣ b \therefore c_0|a,c_0|b c0a,c0b c c c a , b a,b a,b​​的公约数。

这是一个关键的进展!

接下来,我们只要证明 g c d ( a , b ) = c 0 gcd(a,b)=c_0 gcd(a,b)=c0

就能得到: g c d ( a , b ) ∣ c gcd(a,b)|c gcd(a,b)c

d d d a , b a,b a,b的任意正公约数, a = k d , b = l d a=kd,b=ld a=kd,b=ld​。

a x + b y = k d x + l d y = ( k x + l y ) d = c 0 ax + by = kdx+ldy=(kx+ly)d=c_0 ax+by=kdx+ldy=(kx+ly)d=c0

∴ d ∣ c 0 \therefore d|c_0 dc0

∴ g c d ( a , b ) = c 0 \therefore gcd(a,b)=c_0 gcd(a,b)=c0

∴ ∀ a , b , c ∈ Z ,   a x + b y = c \therefore \forall a,b,c\in \Z , \:ax+by=c a,b,cZ,ax+by=c 有解 ⇒ g c d ( a , b ) ∣ c \Rightarrow gcd(a,b)|c gcd(a,b)c

充分性证毕

必要性证明:

证明当 g c d ( a , b ) ∣ c gcd(a,b)|c gcd(a,b)c的时候, a x + b y = c ax+by=c ax+by=c 有解:

这个问题等价于证明:当 g c d ( a , b ) = c 0 gcd(a,b)=c_0 gcd(a,b)=c0时, a x + b y = c 0 ax+by=c_0 ax+by=c0有解:

d = g c d ( a , b ) d = gcd(a,b) d=gcd(a,b)

等式两边同时除以 d d d,等式就被转换为: a ′ x + b ′ y = 1 a'x+b'y=1 ax+by=1 其中 g c d ( a ′ , b ′ ) = 1 gcd(a',b')=1 gcd(a,b)=1

问题就转化为证明这个等式成立: a ′ x + b ′ y = 1 a'x+b'y=1 ax+by=1

这个求解的过程可以由欧几里得算法顺带求出。

a ′ = a , b ′ = b a'=a,b'=b a=a,b=b

模拟求 g c d ( a , b ) gcd(a,b) gcd(a,b)的过程:

a = k 1 b + r 1 a = k_1b+r_1 a=k1b+r1

⇒ a = b , b = r 1 \Rightarrow a=b,b=r_1 a=b,b=r1

b = k 2 r 1 + r 2 b=k_2r_1+r_2 b=k2r1+r2

r 1 = k 3 r 2 + r 3 r_1=k_3r_2+r_3 r1=k3r2+r3

. . . ... ...

r n − 1 = k n + 1 r n + r n + 1 . . . ( 3 ) r_{n-1}=k_{n+1}r_{n}+r_{n+1}...(3) rn1=kn+1rn+rn+1...(3)

r n = k n + 2 r n + 1 + r n + 2 . . . . ( 2 ) r_n=k_{n+2}r_{n+1}+r_{n+2}....(2) rn=kn+2rn+1+rn+2....(2)

r n + 1 = k n + 3 r n + 2 . . . ( 1 ) r_{n+1}=k_{n+3}r_{n+2}...(1) rn+1=kn+3rn+2...(1)​​

g c d = r n + 2 gcd = r_{n+2} gcd=rn+2

欧几里得算法在 r = 0 r=0 r=0​的时候停止,并返回 b b b,也就是 ( 1 ) (1) (1)式子

所以,可以得到 r n + 2 = 1 r_{n+2}=1 rn+2=1

r n = k n + 2 r n + 1 + 1... ( 2 ) r_{n}=k_{n+2}r_{n+1}+1...(2) rn=kn+2rn+1+1...(2)

联立 ( 2 ) , ( 3 ) (2),(3) (2),(3)消去 r n + 1 r_{n+1} rn+1

{ k n + 2 r n + 1 = 1 − r n k n + 2 r n + 1 = k n + 2 r n − 1 − k n + 1 k n + 2 r n \begin{cases} k_{n+2}r_{n+1}=1-r_n\\ k_{n+2}r_{n+1}=k_{n+2}r_{n-1}-k_{n+1}k_{n+2}r_n \end{cases} {kn+2rn+1=1rnkn+2rn+1=kn+2rn1kn+1kn+2rn

得:

( k n + 2 k n + 1 − 1 ) r n + 1 = k n + 2 r n − 1 . . . ( 1 ′ ) (k_{n+2}k_{n+1}-1)r_n+1=k_{n+2}r_{n-1}...(1') (kn+2kn+11)rn+1=kn+2rn1...(1)

联立 ( 1 ′ ) , ( 3 ) (1'),(3) (1),(3)消去 r n r_n rn

{ r n − 2 = k n r n − 1 + r n ( k n + 2 k n + 1 − 1 ) r n + 1 = k n + 2 r n − 1 \begin{cases} r_{n-2} = k_{n}r_{n-1}+r_n\\ (k_{n+2}k_{n+1}-1)r_n+1=k_{n+2}r_{n-1} \end{cases} {rn2=knrn1+rn(kn+2kn+11)rn+1=kn+2rn1
得:
( k n + 2 k n + 1 − 1 ) r n − 2 + 1 = ( k n + 2 k n + 1 k n − k n + k n + 2 ) r n − 1 . . . ( 2 ′ ) (k_{n+2}k_{n+1}-1)r_{n-2}+1=(k_{n+2}k_{n+1}k_{n}-k_n+k_{n+2})r_{n-1}...(2')\\ (kn+2kn+11)rn2+1=(kn+2kn+1knkn+kn+2)rn1...(2)
我们观察式子的结构不难发现:

这个式子只包含 r i , r i − 1 r_i,r_{i-1} ri,ri1这两个已知量,以及常数1,以及 r i , r i − 1 r_i,r_{i-1} ri,ri1前面的系数。

所以,我们可以通过不断的消去 r i r_i ri,使得最终的式子只包含 ( a , b , k ) (a,b,k) (a,b,k)

最终的形式一定可以化简: a x + b y = 1 ax+by=1 ax+by=1。​

必要性证毕。

战术总结:

本节内容的主要内容如下:

1、不定方程的简单介绍。

2、裴蜀定理介绍。

3、裴蜀定理的证明:

  • 先证明充分性:

    • 假定 a x + b y = c ax+by=c ax+by=c有解,证出 ∀ c ∈ A , c 0 ∣ c \forall c\in A,c_0|c cA,c0c,进而得出 c 0 ∣ a , c 0 ∣ b c_0|a,c_0|b c0a,c0b,即 c 0 c_0 c0 a , b a,b a,b的公约数
    • 接着证明 a , b a,b a,b的任意约数 d d d,都有 d ∣ c 0 d|c_0 dc0,得出 c 0 c_0 c0 a , b a,b a,b的最大公约数。
    • 此时证出:若 a x + b y = c 0 ax+by=c_0 ax+by=c0有解,则 c 0 = g c d ( a , b ) c_0=gcd(a,b) c0=gcd(a,b)
    • 在等式两边乘以任意整数可得:若 a x + b y = c ax+by=c ax+by=c有解,则 g c d ( a , b ) ∣ c gcd(a,b)|c gcd(a,b)c
  • 再证明必要性:

    • 即证明当 c 0 = g c d ( a , b ) c_0=gcd(a,b) c0=gcd(a,b)的时候,是否 a x + b y = c 0 ax+by=c_0 ax+by=c0成立
    • 两边除以 c 0 c_0 c0,问题便转为证明:当 g c d ( a , b ) = 1 gcd(a,b)=1 gcd(a,b)=1 时, a ′ x + b ′ y = 1 a'x+b'y=1 ax+by=1成立。
    • 这个等式由欧几里得算法可以得出是有解的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++string类使用大全

目录 温馨提示&#xff1a;这篇文章有约两万字 什么是string类&#xff1f; 一. 定义和初始化string对象 1.string的构造函数的形式&#xff1a; 2.拷贝赋值运算符 3.assign函数 二.string对象上的操作 1.读写string对象 2.读取未知数量的string对象 3.使用getline …

软件工程毕业设计选题100例

文章目录 0 简介1 如何选题2 最新软件工程毕设选题3 最后 0 简介 学长搜集分享最新的软件工程业专业毕设选题&#xff0c;难度适中&#xff0c;适合作为毕业设计&#xff0c;大家参考。 学长整理的题目标准&#xff1a; 相对容易工作量达标题目新颖 1 如何选题 最近非常多的…

Mac brew安装Redis之后更新配置文件的方法

安装命令 brew install redis 查看安装位置命令 brew list redis #查看redis安装的位置 % brew list redis /usr/local/Cellar/redis/6.2.5/.bottle/etc/ (2 files) /usr/local/Cellar/redis/6.2.5/bin/redis-benchmark /usr/local/Cellar/redis/6.2.5/bin/redis-check-ao…

高级商务谈判口才培训教程(3篇)

高级商务谈判口才培训教程&#xff08;3篇&#xff09; 高级商务谈判口才培训教程&#xff08;**篇&#xff09;&#xff1a;基础篇 一、前言 在高级商务谈判中&#xff0c;口才不仅是交流的工具&#xff0c;更是策略执行的关键。本教程将从基础出发&#xff0c;带领大家逐步掌…

【PHP】安装指定版本Composer

1、下载指定版本composer.phar文件&#xff1a;https://github.com/composer/composer/releases 2、将下载的文件添加到全局路径&#xff1a; sudo mv composer.phar /usr/local/bin/composer 3、赋予权限&#xff1a; sudo chmod x /usr/local/bin/composer 4、查看compos…

52.HarmonyOS鸿蒙系统 App(ArkTS)配置文件添加多个权限方法

52.HarmonyOS鸿蒙系统 App(ArkTS)配置文件添加多个权限方法 module.json5

前端开发者如何在项目里控制修改组件的样式

1为了让自己快速下班&#xff0c;修改样式应该是占据大部分时间&#xff0c;在很多组件库的项目里&#xff0c;都会提到主题设置。 比如element的scss配置变量&#xff0c;通常有人喜欢直接引入css样式来快速完成任务&#xff0c;然后在全局覆盖这些选择器对应的样式&#xff0…

OpenCV(二)—— 车牌定位

从本篇文章开始我们进入 OpenCV 的 Demo 实战。首先&#xff0c;我们会用接下来的三篇文章介绍车牌识别 Demo。 1、概述 识别图片中的车牌号码需要经过三步&#xff1a; 车牌定位&#xff1a;从整张图片中识别出牌照&#xff0c;主要操作包括对原图进行预处理、把车牌从整图…

信号知识详解

目录 1、信号的产生 2、core 核心转储 3、信号的保存 4、信号的处理 信号是linux系统提供的&#xff0c;让用户或进程给其他进程发送异步信息的一种方式。 常见的信号处理方式&#xff1a; 1、默认行为 2、忽略 3、自定义 1、信号的产生 1、kill命令 我们可以使用命令 k…

过渡与动画

单元素/组件过渡 Vue在插入、更新或者移除 DOM 时&#xff0c;提供多种不同方式的过渡效果&#xff08;一个淡入淡出的效果&#xff09; 在条件渲染&#xff08;使用v-if&#xff09;、条件展示&#xff08;使用v-show&#xff09;、动态组件、组件根节点等情形中&#xff0c;可…

【火猫DOTA2】电竞世界杯DOTA2项目将在7月份的前三周举办

1、电竞世界杯将于今年7月3日至8月25日在沙特利雅得举办。近日主办方公布了各个项目的举办时间,其中DOTA2项目将在7月份的前三周举办。转载:火猫TV资讯https://www.huomaotv.com/ 目前Falcons、XG、GG和Liquid这五支赢得了足够EPT积分的队伍已经确定直邀沙特。剩下的三个名额还…

SpringBoot集成Kafka开发

4.SpringBoot集成Kafka开发 4.1 创建项目 4.2 配置文件 application.yml spring:application:name: spring-boot-01-kafka-basekafka:bootstrap-servers: 192.168.2.118:90924.3 创建生产者 package com.zzc.producer;import jakarta.annotation.Resource; import org.spri…

MATLAB 数据输出

MATLAB 数据输出 数据导出(或输出)在 MATLAB 的意思是写入文件。MATLAB 允许您在另一个读取 ASCII 文件的应用程序中使用您的数据。为此&#xff0c;MATLAB 提供了几个数据导出选项。 您可以创建以下类型的文件- 数组中的矩形、分隔的ASCII数据文件。 击键的日记&#xff08…

Linux系统安装Redis7(详细版)

Linux系统安装Redis7 一、windows安装redis二、Linux安装Redis下载redis编辑redis7.conf文件启动redis-server服务如何关闭redis服务设置Redis开机自启动 一、windows安装redis Window 下安装 下载地址&#xff1a;https://github.com/dmajkic/redis/downloads 下载到的Redi…

6.k8s中的secrets资源

一、Secret secrets资源&#xff0c;类似于configmap资源&#xff0c;只是secrets资源是用来传递重要的信息的&#xff1b; secret资源就是将value的值使用base64编译后传输&#xff0c;当pod引用secret后&#xff0c;k8s会自动将其base64的编码&#xff0c;反编译回正常的字符…

OpenCV(一) —— OpenCV 基础

1、OpenCV 简介 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个基于 BSD 许可开源发行的跨平台的计算机视觉库。可用于开发实时的图像处理、计算机视觉以及模式识别程序。由英特尔公司发起并参与开发&#xff0c;以 BSD 许可证授权发行&#xff0c…

【QT学习】14.线程学习

一。线程了解 线程是计算机科学中的一个重要概念&#xff0c;它是操作系统能够进行运算调度的最小单位。线程是进程中的一个执行流&#xff0c;一个进程可以包含多个线程。与进程相比&#xff0c;线程更轻量级&#xff0c;可以更高效地利用计算机资源。 线程有以下几个特点&…

vue3+ts 原生 js drag drop 实现

vue3ts 原生 js drag drop 实现 一直以来没有涉及的一个领域就是 drag drop 拖动操作&#xff0c;研究了下&#xff0c;实现了&#xff0c;所以写个教程。 官方说明页面及实例&#xff1a;https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API 最终效果&…

企业计算机服务器中了lockbit勒索病毒如何处理,lockbit勒索病毒解密流程建议

在虚拟的网络世界里&#xff0c;人们利用网络获取信息的方式有很多&#xff0c;网络为众多企业提供了极大便利性&#xff0c;也大大提高了企业生产运营效率&#xff0c;方便企业开展各项工作业务。但随着网络技术的不断发展与应用&#xff0c;越来越多的企业开始关注企业网络数…

Flutter笔记:Widgets Easier组件库(8)使用图片

Flutter笔记 Widgets Easier组件库&#xff08;8&#xff09;&#xff1a;使用图片 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress o…