求最大公约数——欧几里得算法
欧几里得算法的原理:基于这样一种观察,两个整数x和y(x>y)的最大公约数等同于y和(x%y)的最大公约数;
数t整除x和y,当且仅当t整数y和(x%y);这是因为:x = t*y + x%y;
具体代码如下:
#include <iostream> #include <stdlib.h> using namespace std; int gcd(int x, int y) { cout << x << " " << y << endl; if (0 == y) { return x; } return gcd(y, x%y); } int main(int argc, char *argv[]) { int x = atoi(argv[1]); int y = atoi(argv[2]); cout << gcd(x, y) << endl; return 0; }
版权声明:
作者:朝雾之归乡
出处:http://www.cnblogs.com/cnpirate
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。