求gcd(a,b) = ax + by中的gcd(a, b)、a、b(扩展欧几里得算法尾递归版)
2015-08-12 01:45
337 查看
转载注明出处,原文地址:http://blog.csdn.net/powerwoo25/article/details/47434071
求gcd(a,b) = ax + by中的gcd(a, b)、a、b(扩展欧几里得算法尾递归版)
思路:就是扩展欧几里得方法的C语言算法版。写了指针版跟非指针版,指针版可读性没有非指针版好,但是效率有所提高。只贴指针版好了。
求gcd(a,b) = ax + by中的gcd(a, b)、a、b(扩展欧几里得算法尾递归版)
思路:就是扩展欧几里得方法的C语言算法版。写了指针版跟非指针版,指针版可读性没有非指针版好,但是效率有所提高。只贴指针版好了。
转载注明出处,原文地址:http://blog.csdn.net/powerwoo25/article/details/47434071 /* 扩展欧几里得算法 */ typedef struct euclid_three_tuple { int d, x, y; euclid_three_tuple(): d(0), x(0), y(0){}; }triTuple; void ExtendedEuclid(unsigned int a, unsigned b, triTuple *res) { if(b == 0) { res->d = a; res->x = 1; res->y = 0; return; } else { ExtendedEuclid(b, a%b, res); int oldX = res->x; res->x = res->y; res->y = oldX-a/b*res->y; } } #include <stdio.h> int main() { unsigned int m, n; while(~scanf("%d %d", &m, &n)) { triTuple *ans = new triTuple; ExtendedEuclid(m, n, ans); printf("d = %d, x = %d, y = %d\n", ans->d, ans->x, ans->y); delete ans; ans = NULL; } return 0; }
相关文章推荐
- 实现手机QQ的抖动效果
- 【转载】PyTables Windows平台安装说明
- !HDU 5371 最长双回文串(多校7)-卡时间-(manacher+排序+set+lower_bound())
- Keil使用malloc异常进入hardfault调试故障手记
- 08 JAVA 线程 内存模型(二)
- 天猫首页迷思之-jquery实现左侧广告牌图片轮播
- 用WinHex找回丢失的分区
- HDU 3577 Fast Arrangement
- Android中自定义属性(attrs.xml,TypedArray的使用)
- 设计模式:5 依赖倒转原则
- 60.电话 信息 邮件 评分 打开其他应用
- 设计模式: 4开放封闭原则
- SQL语法之查询语句
- hdu 3693 Math teacher's homework(数位dp)
- ACM 2015 中国赛区时间
- 设计模式: 3 单一职责原则
- 设计模式:2策略模式
- POJ 3321 Apple Tree 【树形结构转变为线性结构+线段树OR树状数组】
- 设计模式:1.3 抽象工厂模式
- java mavn 1. 概要 安装