c 求两个整数的最大公约数和最小公倍数

时间:2023-03-09 19:35:49
c 求两个整数的最大公约数和最小公倍数
//求最大公约数是用辗转相除法,最小公倍数是根据公式   m,n 的 最大公约数* m,n最小公倍数 = m*n 来计算 
#include<stdio.h> //将两个整数升序排列
void ascNum(int *p1,int *p2)
{
int temp;
if(*p1 > *p2)
{
temp = *p2;
*p2 = *p1;
*p1 = temp;
}
} //求两个整数的最大公约数 辗转相除法
int getAppr(int a, int b)
{
int c;
ascNum(&a,&b);
do
{
c = b%a;
b = a;
a = c;
}while(c!= 0);
return b;
}
int main(void)
{
int m,n,maxAppr,minComm;
scanf("%d%d",&m,&n);
maxAppr = getAppr(m,n);
minComm = m*n/maxAppr;
printf("最大公约数%d,最小公倍数%d\n",maxAppr,minComm);
return 0;
}