C语言实现扩展欧几里得算法
#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语言实现扩展欧几里得算法相关推荐
- c语言中欧几里得模乘法逆元,扩展欧几里得算法同余方程模m乘法逆元详解
欧几里德算法: 复习:求最大公约数算法(欧几里得算法.也叫辗转相除法).欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd ...
- POJ 1061 BZOJ 1477 Luogu P1516 青蛙的约会 (扩展欧几里得算法)
POJ 1061 BZOJ 1477 Luogu P1516 青蛙的约会 (扩展欧几里得算法) 手动博客搬家: 本文发表于20180226 23:35:26, 原地址https://blog.csdn ...
- HDU1573 X问题【扩展欧几里得算法】
X问题 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissio ...
- POJ1061 青蛙的约会【扩展欧几里得算法】
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 126746 Accepted: 27392 Descript ...
- HDU1576 A/B【扩展欧几里得算法+试探法】
A/B Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- 数论:欧几里得与扩展欧几里得算法
文章目录 欧几里得算法 历史发展 表示 证明 代码 例题 扩展欧几里得算法 表示 求解方法 代码 其他定理: 例题 欧几里得算法 历史发展 欧几里得算法用来求得两个数的最大公约数,大约公元前300年首 ...
- 欧几里得和扩展欧几里得算法
欧几里得算法 又称为辗转相除法,c语言代码如下: 分析:a,b的关系可表示为a=kb+t, 即 a-kb=t, t=a%b, 假设c为a,b的一个公约数,将a-kb=t等式两边同除c, 得 a/c-k ...
- 扩展欧几里得算法_扩展欧几里得递推算法
欧几里得算法 表示 整数 a 与 b 的最大公约数. 若 t = a % b, 则 证明略. 递推版 gcd 算法 gcd 接受变量元组 (a, b) 作为输入,输出最大公约数 (r). 我们很难直接 ...
- 欧几里得算法扩展欧几里得算法
欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b). ...
- 如何利用扩展欧几里得算法求解不定方程_客户端不用的算法系列:从头条笔试题认识扩展欧几里得算法...
难度较高,阅读时间大概 28 分钟 这是数论的第二篇,在<素数筛法>中,我们重温了素数这个数学定义,并且给出了区别于教科书上更高效的 Eratosthenes 筛法和欧拉线性筛.这篇文会从 ...
最新文章
- 计算机二级公共基础知识证书,计算机二级公共基础知识
- 并行口设计数字键盘实验
- 私房库视频学习笔记-小清新BBS系统开发技术归纳
- 微信 小程序组件 搜索分类 带缓存(终极 上线版)
- $.ligerdialog.open中确定按钮加事件_彻底搞懂JavaScript中的this指向问题
- 部署到CloudFoundry上的应用,启动超时的处理
- 计算从A地出发到各个地方的路径及距离
- linux rm 某个时间以前,(转)linux的一个find命令配合rm删除某天前的文件
- mysql哪些字段适合索引_(转)Mysql哪些字段适合建立索引
- 为什么要使用 Node.js
- python game_Python游戏
- c++------------之---【虚函数和抽象基类的应用】
- 转:使用脚本关闭订单头
- Linux系统性能监控工具nmon
- 【路径规划】局部路径规划算法——B样条曲线法(含python实现)
- leetcode#248 中心对称数 III
- 大数据风控系统主要功能分析
- win10下安装多个JDK配置方法
- 纳米数据世界杯数据接口,中超数据,体育数据比分,世界杯赛程api,足球比赛实时数据接口
- 你不知道的CSS特效