C语言习题:求两个数的最大公约数
基本思路:输入两个数,先判断两个数的大小,用大数除以小数
如果余数为0,则最大公约数为小数
如果余数不为0,则小数--,再重复上述步骤
优化:将上述做法封装成一个函数,代码如下:
#include <stdio.h>
int greatest_common_divisor = 0;
//在a > b的情况下判断a和b的最大公约数
void judge(int a, int b){
int i = 0;
for(i = b; i > 0; i--){
if (a % i == 0 && b % i == 0) {
greatest_common_divisor = i;
break;
}
}
}
int main() {
// insert code here...
printf("请输入两个数字:");
int a = 0, b = 0;
scanf("%d%d", &a, &b);
if(a > b) judge(a, b);
else judge(b, a);
printf("最大公约数为%d\n",greatest_common_divisor);
return 0;
}
数学思路:辗转相除法(以此为例)、更相减损法
辗