题目:输入两个整数m和n,求其最大公约数和最小公倍数。
程序分析:本题的关键是求出最大公约数,最小公倍数=两个整数的积即(m*n)➗其最大公约数。
求最大公约数用辗转相除法(又名欧几里得算法)。
算法思路描述:设置一个中间变量t。比较m和n的大小,假如m>n,m➗n=r,r为余数,r>0,然后将n的值赋给m,r的值赋给n。并且再次求余数,知道余数r为0为止,此时n就是最大公约数。
代码实现:
#include <stdio.h>
int main()
{
int x,y,t,r;
printf("请输入两个整数m和n\n");
scanf("%d %d",&x,&y);
if(x<y)
{
t=x;
x=y;
y=t;
}
int n=x*Y;
r=x%y;
while(r)
{
x=y;
y=r;
r=x%y;
}
printf("最大公约数是%d,最小公倍数是%d",y,n/y);
return 0;
}