欧几里得算法&&扩展欧几里得算法<数论>

本文详细介绍了欧几里得算法及其扩展版本的工作原理。主要内容包括:如何利用辗转相除法求解两个整数的最大公约数,以及如何通过扩展欧几里得算法找到满足特定线性组合的整数解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

欧几里得算法

  • 欧几里得算法用于求两个数的最大公约数,也叫辗转相除法
  • 证明:若 a=k*b+r
    则r=a%b 且r=a-k*b
    所以若存在 g是a,b的最大公约数( g|a && g|b )
    那么一定有 g|(a-k*b) 则一定 g|(a%b)
    所以a和b的最大公约数就是b和a%b的最大公约数
  • 终止条件:a%b为0是,返回此时的a,也就是a%b中的b
  • 举个例子模拟一下:
    a=20,b=15
    20和15的最大公约数就是15和5的最大公约数
    15和5的最大公约数就是5和0的最大公约数 即为5
int gcd(int a,int b){
    if(!b) return a;
    return gcd(b,a%b);
}

扩展欧几里得算法

  • 欧几里得算法求的是两个数的最大公约数,扩展欧几里得算法可以求出
    a*x+b*y=gcd(a,b) 的x,y 通解,即求出最大公约数的同时可以求出一组x和y,使得原式成立
    先看一下写法(有“//”的代码很重要)
int exgcd(int a,int b,int &x,int &y){
    if(!b){
        x=1;y=0;//
        return a;
    }
    int ans=exgcd(b,a%b,x,y);
    int xx=x;//
    x=y;//
    y=(xx-a/b*y);//以上这三行是扩欧的精髓
    return ans;
}
  • 终止条件:这和欧几里得算法是一样的。不同的是,除了要返回gcd外,还要给x和y赋值。因为此时b为0,所以a*1+b*0==gcd,所以x=1,y=0;
  • 递归过程:比欧几里得算法多出的步骤是给x,y一步步赋值,直到得到答案。
  • 正确性证明:
    设此时函数为ecgcd(a,b,x,y)
    则下一次递归的函数为exgcd(b,a%b,x,y)
    假设我们已经得到一组x和y(终止时得到),那么返回上一个函数时,x,y应该怎样变化?
    将得到的x和y带入方程,有 b*x+a%b*y=gcd
    又因为 a%b=a-a/b*b
    所以得到 b*x+(a-a/b*b)*y=gcd
    进一步化简 a*y+b*(x-a/b*y)=gcd
    又因为 a*x+b*y=gcd
    所以可以得到两个函数之间x,y的关系
    原式得证
### 解决PyCharm无法加载Conda虚拟环境的方法 #### 配置设置 为了使 PyCharm 能够成功识别并使用 Conda 创建的虚拟环境,需确保 Anaconda 的路径已正确添加至系统的环境变量中[^1]。这一步骤至关重要,因为只有当 Python 解释器及其关联工具被加入 PATH 后,IDE 才能顺利找到它们。 对于 Windows 用户而言,在安装 Anaconda 时,默认情况下会询问是否将它添加到系统路径里;如果当时选择了否,则现在应该手动完成此操作。具体做法是在“高级系统设置”的“环境变量”选项内编辑 `Path` 变量,追加 Anaconda 安装目录下的 Scripts 文件夹位置。 另外,建议每次新建项目前都通过命令行先激活目标 conda env: ```bash conda activate myenvname ``` 接着再启动 IDE 进入工作区,这样有助于减少兼容性方面的问题发生概率。 #### 常见错误及修复方法 ##### 错误一:未发现任何解释器 症状表现为打开 PyCharm 新建工程向导页面找不到由 Conda 构建出来的 interpreter 列表项。此时应前往 Preferences/Settings -> Project:...->Python Interpreter 下方点击齿轮图标选择 Add...按钮来指定自定义的位置。按照提示浏览定位到对应版本 python.exe 的绝对地址即可解决问题。 ##### 错误二:权限不足导致 DLL 加载失败 有时即使指定了正确的解释器路径,仍可能遇到由于缺乏适当的操作系统级许可而引发的功能缺失现象。特别是涉及到调用某些特定类型的动态链接库 (Dynamic Link Library, .dll) 时尤为明显。因此拥有管理员身份执行相关动作显得尤为重要——无论是从终端还是图形界面触发创建新 venv 流程均如此处理能够有效规避此类隐患。 ##### 错误三:网络连接异常引起依赖下载超时 部分开发者反馈过因网速慢或者其他因素造成 pip install 操作中途断开进而影响整个项目的初始化进度条卡住的情况。对此可尝试调整镜像源加速获取速度或是离线模式预先准备好所需资源包后再继续后续步骤。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值