歐幾里得算法的原理:基於這樣一種觀察,兩個整數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; }