最小公倍数 百科内容来自于: 百度百科

两个或多个整数公有的倍数叫做它们的公倍数。 两个或多个整数的公倍数里最小的那一个叫做它们的最小公倍数。

定义

几个数共有的倍数叫做这几个数的公倍数,其中除0以外最小的一个公倍数,叫做这几个数的最小公倍数。
自然数a、b的最小公倍数可以记作[a,b],自然数a、b的最大公因数可以记作(a、b),当(a、b)=1时,[a、b]= a×b。
如果两个数是倍数关系,则它们的最小公倍数就是较大的数,相邻的两个自然数的最小公倍数是它们的乘积。
最小公倍数 乘积 适用 范围 756 4400 最小公倍数 30 99 0 44 50 42 45 99 67 64

适用范围

分数的加减法,中国剩余定理(正确的题在最小公倍数内有解,有唯一的解).

计算方法

(1)分解质因数
先把这几个数的质因数写出来,最小公倍数等于它们所有的质因数的乘积(如果有几个质因数相同,则比较两数中哪个数有该质因数的个数较多,乘较多的次数)。
比如求45和30的最小公倍数。

  45=3*3*5
  30=2*3*5
  不同的质因数是2,3,5。3是他们两者都有的质因数,由于45有两个3,30只有一个3,所以计算最小公倍数的时候乘两个3.
  最小公倍数等于2*3*3*5=90
  又如计算36和270的最小公倍数
  36=2*2*3*3
  270=2*3*3*3*5
  不同的质因数是5。2这个质因数在36中比较多,为两个,所以乘两次;3这个质因数在270个比较多,为三个,所以乘三次。
  最小公倍数等于2*2*3*3*3*5=540
  20和40的最小公倍数是40
(2)公式法
由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。即(a,b)×[a,b]=a×b。所以,求两个数的最小公倍数,就可以先求出它们的最大公约数,然后用上述公式求出它们的最小公倍数。
  例如,求[18,20],即得[18,20]=18×20÷(18,20)=18×20÷2=180。求几个自然数的最小公倍数,可以先求出其中两个数的最小公倍数,再求这个最小公倍数与第三个数的最小公倍数,依次求下去,直到最后一个为止。最后所得的那个最小公倍数,就是所求的几个数的最小公倍数。

示例

例题1
两个数的最大公因数是15,最小公倍数是90,求这两个数分别是多少?
15×1=15,15×6=90;当a1b1分别是2和3时,a、b分别为15×2=30,15×3=45。所以,这两个数是15和90或者30和45。
例题2
两个自然数的积是360,最小公倍数是120,这两个数各是多少?
分析我们把这两个自然数称为甲数和乙数。因为甲、乙两数的积一定等于甲、乙两数的最大公因数与最小公倍数的积。根据这一规律,我们可以求出这两个数的最大公因数是360÷120=3。又因为(甲÷3=a,乙÷3=b)中,3×a×b=120,a和b一定是互质数,所以,a和b可以是1和40,也可以是5和8。当a和b是1和40时,所求的数是3×1=3和3×40=120;当a和b是5和8时,所求的数是3×5=15和3×8=24。
例题3
甲、乙、丙三人是朋友,他们每隔不同天数到图书馆去一次。甲3天去一次,乙4天去一次,丙5天去一次。有一天,他们三人恰好在图书馆相会,问至少再过多少天他们三人又在图书馆相会?
分析从第一次三人在图书馆相会到下一次再次相会,相隔的天数应该是3、4、5的最小公倍数。因为3、4、5的最小公倍数是60,所以至少再过60天他们三人又在图书馆相会。
例题4
一块砖长20厘米,宽12厘米,厚6厘米。要堆成正方体至少需要这样的砖头多少块?
分析把若干个长方体叠成正方体,它的棱长应是长方体长、宽、高的公倍数。现在要求长方体砖块最少,它的棱长应是长方体长、宽、高的最小公倍数,求出正方体棱长后,再根据正方体与长方体体积之间的关系就能求出长方体砖的块数。
例题5
甲每秒跑3米,乙每秒跑4米,丙每秒跑2米,三人沿600米的环形跑道从同一地点同时同方向跑步,经过多少时间三人又同时从出发点出发?
分析甲跑一圈需要600÷3=200秒,乙跑一圈需要600÷4=150秒,丙跑一圈需要600÷2=300秒。要使三人再次从出发点一齐出发,经过的时间一定是200、150和300的最小公倍数。200、150和300的最小公倍数是600,所以,经过600秒后三人又同时从出发点出发。
应用实例
分元宝
亡故的先父留下遗嘱,
共有遗产17个元宝,
老大得元宝的二分之一、 17/2=8.5
老二得元宝的三分之一、 17/3=5.66666
老三得元宝的九分之一、 17/9=1.8
问他们每一个人分别应该分几个元宝?
在《一代大商孟洛川》中是这样做的
孟洛川拿来一个元宝加上去
好了,开始分元宝
答案是:老大9个元
宝、老二6个元宝、老三2个元宝。
很不可思议吧
很简单的初中数学题老大分1/2,老二分1/3,老三分1/9
这三个数的最小公倍数就是18,即9/18+6/18+2/18=17/18,就是说他们老爷子给的这个比例和根本就没到1,。即1-17/18=1/18,也就是说,直接分,那是分不完17元宝的。这样这要用18这个最小公倍数就能分开,最后还剩一个。

编程实现

C#语言实现

public static float minGongBeiShu(intn1,intn2)
{
int temp=Math.Max(n1,n2);
n2=Math.Min(n1,n2);//n2中存放两个数中最小的
n1=temp;//n1中存放两个数中最大的
int product=n1*n2;//求两个数的乘积
while(n2!=0)
{
n1=n1>n2?n1:n2;//使n1中的数大于n2中的数
int m=n1%n2;
n1=n2;
n2=m;
}
return(product/n1);//最小公倍数
}

C语言实现

#include<stdio.h>

int gcd(int a,int b);
int lcm(int a,int b);
int main(void)
{
int m,n,result_gcd,result_lcm;

printf("求两个数的最大公约数及最小公倍数?\n请输入你想计算的两个数:\n");
scanf("%d%d",&m,&n);
result_gcd=gcd(m,n);
result_lcm=lcm(m,n);
printf("最大公约数为:%d\n最小公倍数为:%d\n",result_gcd,result_lcm);

return 0;
}

int gcd(int a,int b)
{
int temp;
if(a<b)
{
//交换两个数,使大数放在a上
temp=a;
a=b;
b=temp;
}
while(b!=0)
{
//利用辗除法,直到b为0为止
temp=a%b;
a=b;
b=temp;
}
return a;
}


int lcm(int a,int b)
{
int temp_lcm;
temp_lcm=a*b/gcd(a,b);//最小公倍数等于两数之积除以其最大公约数
return temp_lcm;
}

C++程序实现

#include<iostream>
using namespace std;
int GCD(int a,int b);
int LCM(int a,int b);
int main()
{
int num1,num2,gcd,lcm;
cout<<"求两个数的最大公约数及最小公倍数"<<endl<<endl;
cout<<"请输入两个数:";
cin>>num1>>num2;
gcd=GCD(num1,num2);
lcm=LCM(num1,num2);//输出最大公约数和最小公倍数
cout<<"最大公约数为:"<<gcd<<endl;
cout<<"最小公倍数为:"<<lcm<<endl;
system("pause");
return 0;
}
int GCD(int num1,int num2)
{
if(num1%num2==0)
return num2;
else return  GCD(num2,num1%num2);
}
int LCM(int a,int b)
{
int temp_lcm;
temp_lcm=a*b/GCD(a,b);//最小公倍数等于两数之积除以最大公约数
return temp_lcm;
}
Fortran语言实现
!gcd()gets the greatest common divisor(i.e.,higest common factor)
!lcm()gets the least common multiple
program gcd_lcm
integer::m,n
write(*,*)'Please input two integers:'
read(*,*)m,n
write(*,*)'They have the greatest common divisor:',gcd(m,n)
write(*,*)'They have the least common multiple:',lcm(m,n)

contains
integer function lcm(mm,nn)
integer,intent(in)::mm,nn
lcm=mm*nn/gcd(mm,nn)
end function lcm
!BL
integer function gcd(mm,nn)
integer,intent(in)::mm,nn
integer::m,n,r,t
m=mm
n=nn
if(m<n)then
t=m
m=n
n=t
endif
do while(r/=0)
r=mod(m,n)
if(r==0) exit
m=n
n=r
end do
gcd=n
end function gcd
end program gcd_lcm

PASCAL语言实现

//1、
var a,b,ans:integer;
function gcd(a,b:integer):longint;
begin
if b=0 then gcd:=a
else gcd:=gcd(b,a mod b);
end;
//2、
var a,b,ans:integer;
function gcd(a,b:integer):longint;
begin
readln(a,b);
ans:=(a*b) div gcd(a,b);
gcd:=ans;
end.

JAVA语言实现

Scanner in=new Scanner(System.in);
 int a=in.nextInt();
 int b=in.nextInt();
 int c=a*b;
 if(a<b)
{
 int r=0;
 r=a;a=b;b=r;
 }
 while(true)
{
 int r=a%b;
 if(r==0){
 System.out.println("最小公倍数:"+c/b);
 break;
 }else
{
 a=b;
 b=r;
 }
}
$firstVoiceSent
- 来自原声例句
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定