裴蜀定理及其证明

裴蜀定理及其证明证明还蛮简单

前言

原来裴蜀是法国数学家QwQ



一、裴蜀定理

对于 x , y x,y x,y 的二元一次不定方程 a x + b y = c ax+by=c ax+by=c ,其有解的充要条件为 gcd ⁡ ( a , b ) ∣ c \gcd(a,b)\mid c gcd(a,b)c

1.充分性证明

充分性:若 gcd ⁡ ( a , b ) ∣ c \gcd(a,b)\mid c gcd(a,b)c ,则 a x + b y = c ax+by=c ax+by=c 有解

k k k a , b a,b a,b 线性组合的最小非负解

q = ⌊ a k ⌋ q=\left\lfloor\dfrac{a}{k}\right\rfloor q=ka ,则有 r = a m o d    k = a − q k = a − q ( a x + b y ) = a ( 1 − q x ) + b ( − q y ) r=a \mod k = a-qk = a-q(ax+by) = a(1-qx)+b(-qy) r=amodk=aqk=aq(ax+by)=a(1qx)+b(qy)

显然 r r r 也为 a , b a,b a,b 线性组合的解,且 0 ≤ r ≤ k 0\le r \le k 0rk

∵ k \because k k 为最小非负解

∴ r = 0 \therefore r=0 r=0

∴ k ∣ a \therefore k\mid a ka

同理 k ∣ b k\mid b kb

d = gcd ⁡ ( a , b ) d=\gcd(a,b) d=gcd(a,b) ,则 s ∣ d s\mid d sd d ≥ s d \ge s ds

∵ d ∣ a , d ∣ b \because d\mid a,d\mid b da,db s s s a , b a,b a,b 线性组合的解

∴ d ∣ s \therefore d\mid s ds

∵ s > 0 \because s>0 s>0

∴ d = s \therefore d=s d=s

a x + b y = c ax+by=c ax+by=c 的最小非负解为 gcd ⁡ ( a , b ) \gcd(a,b) gcd(a,b)

显然 ∀ c = k gcd ⁡ ( a , b ) , k ∈ Z + \forall c=k\gcd(a,b),k\in \Z^+ c=kgcd(a,b),kZ+ 是原方程的解

2.必要性证明

必要性:若 a x + b y = c ax+by=c ax+by=c 有解,则 gcd ⁡ ( a , b ) ∣ c \gcd(a,b)\mid c gcd(a,b)c
证明:
d = gcd ⁡ ( a , b ) d=\gcd(a,b) d=gcd(a,b) ,则 d ∣ a , d ∣ b d\mid a,d\mid b da,db




∵ a x + b y = c \because ax+by=c ax+by=c 有解

∴ d ∣ a x , d ∣ b y \therefore d\mid ax,d\mid by dax,dby

∴ d ∣ a x + b y = c \therefore d\mid ax+by=c dax+by=c

3.推广

对于不定方程 x 1 y 1 + x 2 y 2 + . . . + x n y n = k , ∀ y i ∈ Z x_1y_1+x_2y_2+…+x_ny_n=k, \forall y_i \in \Z x1y1+x2y2+...+xnyn=k,yiZ ,其有解的充要条件为 gcd ⁡ { x i } ∣ k \gcd\{x_i\}\mid k gcd{
xi}
k

证明略


二、裴蜀定理模板题

题目链接:P4549 【模板】裴蜀定理

即推广结论裸题

要注意负数要转成正数再算 gcd ⁡ \gcd gcd

代码如下

#include  
        using namespace std; #define int long long #define R register int n,ans,a[25]; int gcd(R int a,R int b) { 
      return b==0?a:gcd(b,a%b);} signed main() { 
       scanf("%lld",&n); for(R int i=1; i<=n; i++) { 
       scanf("%lld",&a[i]); a[i]=a[i]>0?a[i]:-a[i]; ans=gcd((i==1?a[1]:ans),a[i]); } printf("%lld\n",ans); return 0; } 

总结

本文简单介绍了裴蜀定理

转载请说明出处

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208513.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午11:25
下一篇 2026年3月19日 上午11:25


相关推荐

  • 几百万数据放入内存不会把系统撑爆吗?「建议收藏」

    几百万数据放入内存不会把系统撑爆吗?

    2022年2月13日
    42
  • 如何做好FAE工作及FAE职位发展

    如何做好FAE工作及FAE职位发展此文较长 是作者对于半导体 FAE 职业的一些总结 码字不容易 耐心的阅读 欢迎点赞 曾经认识一位做电源研发的工程师 转行在一家代理商做 FAE 做了一年半以后 就提出了离职请求 他老板问他是什么原因 他说了一句至今仍然让作者记忆犹新的回答 他说他实在过不了这种求人的日子 所以 他决定还是回去做研发 其实 这个工程师的选择非常正确 做 就要做自己喜欢的 至少自己开心 不喜欢就不要勉强自己 因为看不到方向

    2026年3月19日
    4
  • 三种JS截取字符串方法

    三种JS截取字符串方法转载: https://www.cnblogs.com/zccfun/p/6054533.htmlJS提供三个截取字符串的方法,分别是:slice(),substring()和substr(),它们都可以接受一个或两个参数:varstmp="rcinn.cn";使用一个参数alert(stmp.slice(3));//从第4个字符开始,截取到最后个字符;返回"nn.cn"a…

    2022年4月29日
    59
  • pytorch学习笔记(三十六):AdaGrad

    pytorch学习笔记(三十六):AdaGrad文章目录 AdaGrad 算法 1 算法 2 特点 3 从零开始实现 4 简洁实现小结 AdaGrad 算法在之前介绍过的优化算法中 目标函数自变量的每一个元素在相同时间步都使用同一个学习率来自我迭代 举个例子 假设目标函数为 fff 自变量为一个二维向量 x1 x2 x 1 x 2 top x1 x2 该向量中每一个元素在迭代时都使用相同的学习率 例如 在学习率为 eta 的梯度下降中 元素 x1x 1×1 和 x2x 2×2 都使用相同的学习率 eta 来自我迭代 x1 x1 f x1

    2026年3月17日
    2
  • 多线程中 ManualResetEvent 的用法[通俗易懂]

    多线程中 ManualResetEvent 的用法[通俗易懂]///<summary>///手动重启///</summary>privateManualResetEventmanualReset=newManualR

    2022年7月1日
    29
  • Burp Suite抓包讲解「建议收藏」

    Burp Suite抓包讲解「建议收藏」目录BurpSuite安装介绍BurpSuite抓包工具概述设置代理信息抓包的基本操作抓HTTPS包的证书设置BurpSuite安装介绍BurpSuite是一款集成化的渗透测试工具,包含了许多功能,可以帮助我们高效地完成对web应用程序的渗透测试和攻击。由Java语言编写,执行程序是Java文件类型的jar文件,免费版可在官网下载。环境运行时依赖JRE,需提前安装Java环境。百度JDK下载即可。(打开cmd,输入Java-version,便可查看版本信息)环境变量配置

    2022年6月10日
    160

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号