#include<stdio.h>
int Euclid(int* d, int* m);
int result[2] = { 0 }; //全局变量用来保存执行欧几里得算法后的结果
int main() {int init_d = 0, init_m = 0 ;printf("请输入两个公因数(空格隔开):");scanf_s("%d %d",&init_d,&init_m);//由定义对数组进行赋值int x[3] = { 1,0,init_m };int y[3] = { 0,1,init_d };Euclid(x, y);//若Y2=0,则表示两个数没有逆元,用NULL表示//判断是否有逆元if (result[1] == NULL) {printf("%d与%d的最大公约数为%d,无逆元", init_d, init_m, result[0]);}else{printf("%d与%d的最大公约数为:%d\n",init_d,init_m,result[0]);printf("%d是%d的模%d的逆元", init_d, init_m, result[1]);}}
int Euclid(int* x, int* y) {if (y[2] == 0) {result[0] = x[2];result[1] = NULL;return 0;         //若无返回值,会不停循环,导致Q=x[2]/y[2]中的y2为0,此时报错。}if (y[2] == 1) {result[0] = y[2];result[1] = y[1];return 1;}int Q=0;Q = x[2] / y[2];int T1 = x[0] - Q * y[0];int T2 = x[1] - Q * y[1];int T3 = x[2] - Q * y[2];x[0] = y[0]; x[1] = y[1]; x[2] = y[2];y[0] = T1; y[1] = T2; y[2] = T3;Euclid(x, y);         //回调欧几里得算法继续求公因数
}

C语言实现扩展欧几里得算法相关推荐

  1. c语言中欧几里得模乘法逆元,扩展欧几里得算法同余方程模m乘法逆元详解

    欧几里德算法: 复习:求最大公约数算法(欧几里得算法.也叫辗转相除法).欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd ...

  2. POJ 1061 BZOJ 1477 Luogu P1516 青蛙的约会 (扩展欧几里得算法)

    POJ 1061 BZOJ 1477 Luogu P1516 青蛙的约会 (扩展欧几里得算法) 手动博客搬家: 本文发表于20180226 23:35:26, 原地址https://blog.csdn ...

  3. HDU1573 X问题【扩展欧几里得算法】

    X问题 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissio ...

  4. POJ1061 青蛙的约会【扩展欧几里得算法】

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 126746   Accepted: 27392 Descript ...

  5. HDU1576 A/B【扩展欧几里得算法+试探法】

    A/B Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  6. 数论:欧几里得与扩展欧几里得算法

    文章目录 欧几里得算法 历史发展 表示 证明 代码 例题 扩展欧几里得算法 表示 求解方法 代码 其他定理: 例题 欧几里得算法 历史发展 欧几里得算法用来求得两个数的最大公约数,大约公元前300年首 ...

  7. 欧几里得和扩展欧几里得算法

    欧几里得算法 又称为辗转相除法,c语言代码如下: 分析:a,b的关系可表示为a=kb+t, 即 a-kb=t, t=a%b, 假设c为a,b的一个公约数,将a-kb=t等式两边同除c, 得 a/c-k ...

  8. 扩展欧几里得算法_扩展欧几里得递推算法

    欧几里得算法 表示 整数 a 与 b 的最大公约数. 若 t = a % b, 则 证明略. 递推版 gcd 算法 gcd 接受变量元组 (a, b) 作为输入,输出最大公约数 (r). 我们很难直接 ...

  9. 欧几里得算法扩展欧几里得算法

    欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b). ...

  10. 如何利用扩展欧几里得算法求解不定方程_客户端不用的算法系列:从头条笔试题认识扩展欧几里得算法...

    难度较高,阅读时间大概 28 分钟 这是数论的第二篇,在<素数筛法>中,我们重温了素数这个数学定义,并且给出了区别于教科书上更高效的 Eratosthenes 筛法和欧拉线性筛.这篇文会从 ...

最新文章

  1. 计算机二级公共基础知识证书,计算机二级公共基础知识
  2. 并行口设计数字键盘实验
  3. 私房库视频学习笔记-小清新BBS系统开发技术归纳
  4. 微信 小程序组件 搜索分类 带缓存(终极 上线版)
  5. $.ligerdialog.open中确定按钮加事件_彻底搞懂JavaScript中的this指向问题
  6. 部署到CloudFoundry上的应用,启动超时的处理
  7. 计算从A地出发到各个地方的路径及距离
  8. linux rm 某个时间以前,(转)linux的一个find命令配合rm删除某天前的文件
  9. mysql哪些字段适合索引_(转)Mysql哪些字段适合建立索引
  10. 为什么要使用 Node.js
  11. python game_Python游戏
  12. c++------------之---【虚函数和抽象基类的应用】
  13. 转:使用脚本关闭订单头
  14. Linux系统性能监控工具nmon
  15. 【路径规划】局部路径规划算法——B样条曲线法(含python实现)
  16. leetcode#248 中心对称数 III
  17. 大数据风控系统主要功能分析
  18. win10下安装多个JDK配置方法
  19. 纳米数据世界杯数据接口,中超数据,体育数据比分,世界杯赛程api,足球比赛实时数据接口
  20. 你不知道的CSS特效

热门文章

  1. GlobalMapper20提取点云LAS文件当中的投影信息
  2. 网站渗透零基础教程 渗透测试工程师养成之路
  3. 用 reStructuredText 写作:快速入门指南
  4. vm15设置成中文界面
  5. 通过注册表文件进行配置WSUS自动更新
  6. 模糊控制洗衣机c语言程序,模糊控制洗衣机
  7. <数据结构> 顺序表
  8. Javassist简介
  9. 将微信表情包保存为图片
  10. 使用selenium下载百度图片