思想:两个数的最大公约数一定小于或者等于两者中较小的数,那么就从1开始一直除,除到较小值,得出最大公约数
2-辗转相除法
思想:用两者中任意一个数,除以另外一个数,得到余数,在用刚才的除数除以余数,一直这样除下去,如果哪一次余数为0,那么该次中的除数就是最大公约数。
//求两个数的最大公约数 //暴力求解法 int GetCommonDivisor_force(int a, int b) { int i = 0; int min = a > b ? b : a; int divisor = 1; for (i = 2; i <= min; i++) { if ((a % i == 0) && (b % i == 0)) { divisor = i; } } return divisor; } //辗转相除法 int GetCommonDivisor_algorithm(int a, int b) { int r = 1; while (r) { r = a % b; a = b; b = r; } return a; } int main() { int a = 125; int b = 30; //int ret = GetCommonDivisor_algorithm(a, b); int ret = GetCommonDivisor_force(a, b); printf("最大公约数为:%d\n", ret); return 0; }