求最大公约数——辗转相除法
最小公倍数=输入的两个数之积除于它们的最大公约数
#include <stdio.h>
/*
求最大公约数——辗转相除法
最小公倍数=输入的两个数之积除于它们的最大公约数
a=12 b=18 t=12
a=18 b=12 t=6
a=12 b=6 t=0
a=6 b=0 循环结束
*/
int main(){
int a,b,n;
scanf("%d %d",&a,&b);
n=a*b;
while(b!=0){
int t = a % b;
a = b;
b = t;
printf("a=%d b=%d t=%d\n", a,b,t);
}
printf("最大公约数是%d\n",a);
printf("最小公倍数是%d\n",n/a);
}
参考一下
#include <stdio.h>
int main() {
int a, b, min, i, gcd;
printf("请输入两个正整数a和b:\n");
scanf("%d%d", &a, &b);
// 求a和b中的最小值
min = (a < b) ? a : b;
// 从最小值开始循环
for (i = min; i >= 1; i--) {
// 如果i同时是a和b的约数,则i为它们的最大公约数
if (a % i == 0 && b % i == 0) {
gcd = i;
break;
}
}
printf("%d和%d的最大公约数为%d\n", a, b, gcd);
return 0;
}