(1) 最小公倍数 = 两个数的乘积 ÷最大公约数
(2) 最大公约数 : 利用辗转相除法(用较大值 % 较小值,用除数和余数反复做除法运算,直到余数为0,此时的除数为最大公约数)
辗转相除法:假如需要求 100 和18 两个正整数的最大公约数
100 / 18 = 5 (余 10)
18 / 10= 1(余8)
10 / 8 = 1(余2)
8 / 2 = 4 (余0)
至此,最大公约数为2
#include <stdio.h>
#include <math.h>
int main (){
int m,n,r;
printf("请输入两个正整数:\n");
scanf("%d%d",&m,&n);
if(m<n){ //判断较大值和较小值,交换顺序
int temp = m;
m = n;
m = temp;
}
double total = m*n; //用来求最小公倍数 ,用double类型,防止溢出
r = m % n;
while(r !=0){ //判断余数是否为0,利用while循环对除数和余数重新赋值,并做取余运算,直到余数为0
m = n;
n = r;
r = m % n;
}
double num = total / n;
printf("%d和%d的最大公约数为:%d\n",m,n,n);
printf("%d和%d的最小公倍数为:%lf\n",m,n,num);
return 0;
}