/* 题目:输入两个正整数m和n,求其最大公约数和最小公倍数
程序分析:
1.最小公倍数=输入的两个数之积除于它们的最大公约数,关键是求出最大公约数;
2.求最大公约数用辗转相除法(又名欧几里德算法)
算法描述:
第一步:a ÷ b,令r为所得余数(0≤r 第二步:互换:置 a←b,b←r,并返回第一步
int main()
{
int a,b,t,r,n;
printf("请输入两个数字:\n");
scanf("%d %d",&a,&b);
if(a<b)
{t=b;b=a;a=t;}
r=a%b;
n=a*b;
while(r!=0)
{
a=b;
b=r;
r=a%b;
}
printf("这两个数的最大公约数是%d,最小公倍数是%d\n",b,n/b);
return 0;
} */
#include <stdio.h>
int main()
{
int num1, num2, num3;
int least = 1;
int i;
printf("输入两个正整数:");
scanf("%d %d", &num1, &num2);
num3 = num1*num2;
for (i = 2; i<=num1 && i<=num2; i++) {
while (0==num1%i && 0==num2%i) {
least *= i;
num1 /= i;
num2 /= i;
}
}
printf("最大公约数:%d\n", least);
printf("最小公倍数:%d\n", num3/least);
return 0;
}