辗转相除法:思路很简单,就是先判断两个数的大小(如a、b),用大的数除小的数。然后,将除数赋值给被除数,将余数赋值给除数。循环该过程,直到余数为0时,此时的除数(c)即为所求的最大公约数。而最小公倍数=a*b/c
#include<stdio.h>
int main() {
int gcd(int m, int n); //对函数gcd进行声明
int a, b, m, n, c;
printf("请输入两个正整数:");
scanf("%d %d", &a, &b);
//找出a,b中最大的数
if (a > b) {
m = a;
n = b;
}
else {
m = b;
n = a;
}
c = gcd(m, n);
printf("最大公约数为:%d\n", c);
printf("最小公倍数为:%d", a * b / c); //最小公倍数=a*b/最大公约数
return 0;
}
//创建一个求最大公约数的函数,只需要在main中调用即可
int gcd(int m, int n) {
int r;
r = m % n;
while (r != 0) { //r:余数;r!=0时,执行循环体,当r=0时,跳出while循环
m = n;
n = r;
r = m % n;
}
return n; //跳出循环,返回最大公约数n,(此时作为除数存在),返回到调用函数的位置,赋值给c
}
显示的结果如下: