求两个数的最大公约数和最小公倍数 C语言

时间:2021-07-29 12:37:26
C程序设计第八章的第一道题目,求两个数的最大公约数和最小公倍数。
需要注意一下几点:1.最大公约数和最小公倍数间的关系:
设两个数是a,b最大公约数是p,最小公倍数是q
那么有这样的关系:ab=pq
所以q=ab/p。
2.任意整数和0的公约数是该整数的所有约数,所以它们的最大公约数为该整数本身。
3.碾转相除法:被除数%除数=余数,如果余数不为0,就让原来的除数做为被除数,余数作为除数,
再进行运算 被除数%除数=余数,直到得到的余数为0为止,此时的除数就是最大公约数。

#include
<stdio.h>
int main()
{
int hcf(int,int);
int lcd(int,int,int);
int u,v,h,l;
printf(
"请输入两个整数:\n");
scanf(
"%d",&u);
scanf(
"%d",&v);
h
=hcf(u,v);
printf(
"H.C.F=%d\n",h);
l
=lcd(u,v,h);
printf(
"L.C.D=%d\n",l);
return 0;
}

//求最大公约数

int hcf(int u,int v)
{
int temp;
if (u<v)
{temp
=u;u=v;v=temp;}
while (v!=0)
//碾转相除法
{
temp=u%v;
u
=v;
v
=temp;}
return(u);
}

//求最小公倍数
int lcd(int u,int v,int h)
{
return(u*v/h);
}