三个数的最小公倍数的一般方法就是短除法,下面我来介绍一下怎样使用短除法求最小公倍数吧:
在求公倍数之前我们要先来了解一下什么是两两互质:就是任意两个数除了1以外没有其他公因数。
短除法第一步是找出三个数的公因数,用这三个数的公因数去除这三个数,得到下一行的三个数
在得到的商中,再用剩下所有数的公因数继续除,一直到三个商中的数都是两两互质为止
把短除法边缘的所有数值相乘起来,得到的积就是这三个数的最小公倍数。
求三个数的最大公约数及最小公倍数
三个正整数a,b,c的最大公约数为p,记作:(a,b,c)=p;最小公倍数为q,记作:[a,b,c]=q.
例.求18,24,36的最大公约数及最小公倍数。
解法一、用短除法:
1)求最大公约数:
2)求最小公倍数:
接着上面对3,4,6继续用短除法:
解法二、先求出其中两个数的最大公约数p和最小公倍数q,再求p与第三个数的最大公约数,以及q与第三个数的最小公倍数:
1)求最大公约数:因为(18,24)=6,又因为(6,36)=6,所以(18,24,36)=6.
2)求最小公倍数:因为[18,24]=72,又因为[72,36]=72,所以[18,24,36]=72
用C语言编程如下:
//求三个数a,b,c的最大公约数p及最小公倍数q,记作:p=(a,b,c),q=[a,b,c]
#include <stdio.h>
int main ()
{ int gys(int,int); //函数原型:求最大公约数
int a,b,c,p,q;
printf("请输入三个整数:a b c(相互用空格隔开):"); scanf("%d %d %d",&a,&b,&c);
p=gys(a,b);//调用函数:求a,b的最大公约数p
q=a*b/p; //求a,b的最小公倍数q(注:因两个数a,b的最大公约数p与它们的最小公倍数q之积pq,等于这两个数之积ab)
p=gys(p,c);//求p,c的最大公约数(也即a,b,c的最大公约数)仍用p表示
printf("(%d,%d,%d)=%d, ",a,b,c,p); //输出三个数的最大公约数
p=gys(q,c);//求q,c的最大公约数p
printf(" [%d,%d,%d]=%d",a,b,c,q*c/p); //输出三个数的最小公倍数
}
//求最大公约数函数:
int gys(int x,int y) //x,y为形参
{ int r=1;//使循环能进行
while(r!=0) //辗转相除:
{ r=x%y;//求余
x=y;y=r;//辗转
}
return (x); //返回最大公约数x
}