热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

gcdexgcd斐蜀定理的求解方法及应用

本文介绍了求解gcdexgcd斐蜀定理的迭代法和递归法,并解释了exgcd的概念和应用。exgcd是指对于不完全为0的非负整数a和b,gcd(a,b)表示a和b的最大公约数,必然存在整数对x和y,使得gcd(a,b)=ax+by。此外,本文还给出了相应的代码示例。

gcd就是求a和b最大公约数,一般方法就是递推。不多说,上代码。

一.迭代法

int gcd(int m, int n)
{
while(m>0) { int c = n % m; n = m; m = c; } return n;
}

二.递归法

int Gcd(int a, int b)
{
if(b == 0)return a;return Gcd(b, a % b);
}

但exgcd是个什么玩意???

百度了一下,百科这么讲的:

对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然

存在整数对 x,y ,使得 gcd(a,b)=ax+by。

好像很好理解的样子,百度还给了个代码

int gcd(int a,int b,int &x,int &y){if (b==0){x=1,y=0;return a;}int q=gcd(b,a%b,y,x);y-=a/b*x;return q;
}

???什么玩意???

于是我又找了一段证明:

证明:当 b=0 时,gcd(a,b)=a,此时 x=1 , y=0当 b!=0 时,设 ax1+by1=gcd(a,b)=gcd(b,a%b)=bx2+(a%b)y2又因 a%b=a-a/b*b则 ax1+by1=bx2+(a-a/b*b)y2ax1+by1=bx2+ay2-a/b*by2ax1+by1=ay2+bx2-b*a/b*y2ax1+by1=ay2+b(x2-a/b*y2)解得 x1=y2 , y1=x2-a/b*y2因为当 b=0 时存在 x , y 为最后一组解而每一组的解可根据后一组得到所以第一组的解 x , y 必然存在得证

 于是刚才那段代码返回的是a和b的gcd

void exgcd(int a,int b)
{
if (b){exgcd(b,a%b);int k=x;x=y;y=k-a/b*y; //k就是上一组的x-- y1 = x2 - a/b*y2;}else y=(x=1)-1;
}

还有一个斐蜀定理。。。

若a,b是整数,且(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立。

它的一个重要推论是:a,b互质的充要条件是存在整数x,y使ax+by=1.

转:https://www.cnblogs.com/DukeLv/p/8406940.html



推荐阅读
  • 在Linux/WSL环境中,本文对Shell任务的并行处理进行了详细的测试与分析。通过多种并行处理技术,如GNU Parallel和xargs,探讨了如何有效提升任务执行效率和系统资源利用率。实验结果表明,合理配置并行参数能够显著缩短任务完成时间,提高系统整体性能。此外,文章还介绍了Shell脚本编写的基本原则和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 本文深入探讨了 `const` 和 `readonly` 关键字在编程中的核心区别及其具体应用场景。`const` 主要用于声明不可变的常量,确保其值在编译时即确定且不可更改。相比之下,`readonly` 允许在构造函数中对字段进行初始化,并在对象创建后保持不变。文章详细分析了这两种关键字的语法特点、使用场景以及它们在不同编程环境下的优劣。此外,还提供了多个示例,帮助读者更好地理解和应用这些概念。 ... [详细]
  • Dapper:一款高效轻量的ORM框架
    Dapper 是一个高效且轻量级的 ORM(对象关系映射)框架,由 StackExchange 开发并维护。它旨在提供快速的数据访问性能,同时保持代码的简洁性和易用性。Dapper 可以显著提高开发效率,特别适用于需要高性能数据操作的应用场景。更多详细信息可参考其官方文档和 GitHub 仓库。 ... [详细]
  • 在处理Java程序时,中文乱码是一个常见的问题。本文将详细探讨导致中文乱码的原因,并分享有效的解决方案,帮助开发者在实际工作中避免这一问题。通过具体的代码示例和最佳实践,本文旨在提供全面的指导,确保中文字符在不同环境下的正确显示。 ... [详细]
  • 构建和优化自定义Python模块并不复杂,因为每个Python程序本质上都是一个模块。通过合理的设计和优化,可以提高模块的可重用性和可维护性。本文将详细介绍如何创建自定义模块,并提供实用的优化技巧,帮助开发者提升代码质量和开发效率。 ... [详细]
  • 近日,百度杀毒成功获得了英国西海岸实验室的Checkmark认证,顺利通过了木马检测、病毒防护及清除等多项严格测试。这一成就标志着卡巴斯基核心技术和百度云的深度合作,共同推动了绿色科技的新潮流。 ... [详细]
  • Python初学者入门指南:从基础到实践的全面学习路径本文为Python初学者提供了一条从基础到实践的全面学习路径。特别介绍了Python字典(Dictionary)中的`items()`方法,该方法用于返回字典中所有键值对的视图对象,便于在循环和其他操作中使用。通过实例讲解,帮助读者更好地理解和应用这一重要功能。 ... [详细]
  • 亚马逊老板杰夫·贝佐斯
    本文主要介绍关于的知识点,对【亚马逊创始人或成地球首位万亿富豪,起底贝佐斯创业之路】和【亚马逊老板杰夫·贝佐斯】有兴趣的朋友可以看下由【CSDN资讯】投稿的技术文章,希望该技术和经验能帮到你解决你所遇 ... [详细]
  • 深入解析MySQL Replication中的并行复制机制与实例应用【MySQL进阶教程】
    本文深入探讨了MySQL 5.6版本后引入的并行复制机制,详细解析了其工作原理及优化效果。通过具体实例,展示了如何在实际环境中配置和使用并行复制,以提高数据同步效率和系统性能。 ... [详细]
  • 一键将应用部署至远程服务器,体验超乎想象的便捷与高效
    该插件作为IDEA的内置功能,用户可以直接启用,无需额外安装。通过简单的配置,即可实现应用的一键部署至远程服务器,极大地提升了开发效率和便捷性。插件支持镜像管理和容器管理,允许用户与容器进行交互,并且兼容Docker Compose,适用于复杂的多容器应用部署。总结部分详细介绍了插件的使用方法和优势,附带的参考资料和项目源码地址为用户提供更多学习和实践资源。 ... [详细]
  • 10款精选jQuery插件助力响应式网页设计布局优化
    响应式网页设计在当今的数字环境中至关重要。本文精选了10款优秀的jQuery插件,旨在帮助设计师和开发者优化网站布局,确保内容在不同设备上(如手机、平板电脑等)都能呈现最佳效果,提升用户体验。这些插件不仅功能强大,还能显著简化开发流程,提高工作效率。 ... [详细]
  • 掌握 esrally 三步骤:高效执行 Elasticsearch 性能测试任务
    自从上次发布 esrally 教程已近两个月,期间不断有用户咨询使用过程中遇到的各种问题,尤其是由于测试数据托管在海外 AWS 上,导致下载速度极慢。为此,本文将详细介绍如何通过三个关键步骤高效执行 Elasticsearch 性能测试任务,帮助用户解决常见问题并提升测试效率。 ... [详细]
  • Panabit应用层流量管理解决方案
    Panabit是一款国内领先的应用层流量管理解决方案,提供高度开放且免费的专业服务,尤其擅长P2P应用的精准识别与高效控制。截至2009年3月25日,该系统已实现对多种网络应用的全面支持,有效提升了网络资源的利用效率和安全性。 ... [详细]
  • 综合实训 201521440015
    Chinesepeople’publicsecurityuniversity网络对抗技术实验报告实验五综合渗透学生姓名常泽远年级15区队4指导教师高见信息技术与网络安全学院2018 ... [详细]
  • 如下程序#include<iostream>classA{public:char*test();private: ... [详细]
author-avatar
飞翔1
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有