1、Euclidean algorithm【辗转相除法】
古老的求最大公约数(greatest common divisor GCD)的算法
算法思想参见wikipedia:http://en.wikipedia.org/wiki/Euclidean_algorithm
int gcd(int a, int b) { int t; if(a < b) { t = b; b = a; a = t; } while(b) { t = b; b = b % a; a = t; } return a; }
2、 Extended Euclidean algorithm
拓展欧几里得算法能够求 ax + by = gcd(a,b) 中的x, y值。
详细算法思路参见wikipedia:http://en.wikipedia.org/wiki/Extended_Euclidean_algorithm
直接用代码表示:
int extgcd(int a, int b, int& x, int &y){ int d = a; if(b != 0){ d = extgcd(b, a%b, y, x); y -= (a / b) * x; } else{ x = 1; y = 0; } return d; }
作者:u011652573 发表于2014-3-26 9:09:01 原文链接
阅读:36 评论:0 查看评论