#include <iostream>
int max(int a, int b);
int max1(int a, int b);
int min(int a, int b);
int main()
{
int a, b;
printf("请输入两个整数:");
scanf_s("%d%d", &a, &b);
printf("while循环:%d和%d的最大公约数是:%d\n", a, b, max(a, b));
printf("递归调用:%d和%d的最大公约数是:%d\n", a, b, max1(a, b));
printf("%d和%d的最小公倍数是:%d", a, b, min(a, b));
}
/*
求两个整数的最大公约数:采用短除法
1.如果a%b==0,说明b就是最大公约数;
2.如果a%b!=0,则将b赋值给a,a%b赋值给b,一直循环,直到a%b==0
*/
//使用while循环
int max(int a, int b) {
int r = 1;
while (r != 0) {
r = a % b;
a = b;
b = r;
}
return a;
}
//使用递归调用
int max1(int a, int b) {
int r = a % b;
if (r == 0) {
return b;
}
else {
max1(b, r);
}
}
//求两个整数的最小公倍数=a*b/最大公约数
int min(int a, int b) {
return a * b / max(a, b);
//return a * b / max1(a, b);
}