问题描述:
求两个非负整数u和v的最大公约数和最小公倍数。
分析:
求两个非负整数的最大公约数可以采用辗转相除法。其过程为:当v不为0时,辗转操作为r=u%v,u=v,v=r,直到v=0时,u的值即为所求。
实例:
求32和6的最大公约数,u=32,v=6。r=32%6=2,然后6赋值给u,2赋值给v。因为v!=0,再求r=u%v=0,然后2赋值给u,0赋值给v,此时v=0,辗转结束,u的值为2,则2为32和6的最大公约数。
注:最小公倍数为u与v的成绩除以最大公约数。
代码如下:
#include<stdio.h>
int main()
{
int u,v,r,u1,v1;
scanf("%d%d",&u,&v);
u1=u;
v1=v;
while(v!=0)
{
r=u%v;
u=v;
v=r;
}
printf("%d %d\n",u,u1*v1/u);
return 0;
}