最小公倍数 编辑

数学术语

最小公倍数最小公倍数

两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。整数a,b的最小公倍数记为,同样的,a,b,c的最小公倍数记为,多个整数的最小公倍数也有同样的记号。

与最小公倍数相对应的概念是最大公约数,a,b的最大公约数记为(a,b)。关于最小公倍数与最大公约数,我们有这样的定理:(a,b)x=ab(a,b均为整数)。

基本信息

编辑

中文名:最小公倍数

外文名:Least Common Multiple

定义:几个数的最小公倍数

算法:借助最大公约数来计算

对象:两个及两个以上的数

领域:数学

定义

编辑

几个数共有的倍数叫做这几个数的公倍数,其中除0以外最小的一个公倍数,叫做这几个数的最小公倍数。

自然数a、b的最小公倍数可以记作,自然数a、b的最大公因数可以记作(a、b),当(a、b)=1时,= a×b。如果两个数是倍数关系,则它们的最小公倍数就是较大的数,相邻的两个自然数的最小公倍数是它们的乘积。最小公倍数=两数的乘积/最大公约(因)数, 解题时要避免和最大公约(因)数问题混淆。

最小公倍数的适用范围:分数的加减法,中国剩余定理(正确的题在最小公倍数内有解,有唯一的解)。因为,素数是不能被1和自身数以外的其它数整除的数;素数X的N次方,是只能被X的N及以下次方,1和自身数整除。所以,给最小公倍数下一个定义:S个数的最小公倍数,为这S个数中所含素因子的最高次方之间的乘积。

例如:1,求756,4400,19845,9000的最小公倍数?

因756=2*2*3*3*3*7,4400=2*2*2*2*5*5*11,19845=3*3*3*3*5*7*7,9000=2*2*2*3*3*5*5*5,这里有素数2,3,5,7,11.2最高为4次方16,3最高为4次方81,5最高为3次方125,7最高为2次方49,还有素数11。得最小公倍数为16*81*125*49*11=87318000.2,自然数1至50的最小公倍数,因为,√50≈7,所以,在50之内的数只有≤7的素数涉及N次方。在50之内,2的最高次方的数为32,3的最高次方的数为27,5的最高次方的数为25,7的最高次方的数为49,其余为50之内的素数。所以,1,2,3,4,5,6,…,50的最小公倍数为:32*27*25*49*11*13*17*19*23*29*31*37*41*43*47=3099044504245996706400

性质及特点

编辑

最小公倍数的性质:公倍数(common multiple)指在两个或两个以上的自然数中,如果它们有相同的倍数,这些倍数就是它们的公倍数,其中除0以外最小的一个公倍数,叫做这几个数的最小公倍数。

最大公因数和最小公倍数之间的性质:两个自然数的乘积等于这两个自然数的最大公约数和最小公倍数的乘积。最小公倍数的计算要把三个数的公有质因数和独有质因数都要找全,最后除到两两互质为止。

最小公倍数特点:倍数的只有最小的没有最大,因为两个数的倍数可以无穷大。

最小公倍数计算方法:

1、分解质因数法

2、公式法。

适用范围

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

将最小公倍数应用到实际中,称之为最小公倍数法。最小公倍数法是统计学的一个术语,以各备选方案计算期的最小公倍数作为比选方案的共同计算期,并假设各个方案均在这样一个共同的计算期内重复进行。

计算方法

编辑

分解质因数法

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

最大公约数,最小公倍数最大公约数,最小公倍数

比如求45和30的最小公倍数。

45=3*3*5

30=2*3*5

不同的质因数是2。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

公式法

由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。即(a,b)×=a×b。所以,求两个数的最小公倍数,就可以先求出它们的最大公约数,然后用上述公式求出它们的最小公倍数。

例如,求,即得=18×20÷(18,20)=18×20÷2=180。求几个自然数的最小公倍数,可以先求出其中两个数的最小公倍数,再求这个最小公倍数与第三个数的最小公倍数,依次求下去,直到最后一个为止。最后所得的那个最小公倍数,就是所求的几个数的最小公倍数。

示例

编辑

例题1

两个数的最大公因数是15,最小公倍数是90,求这两个数分别是多少?

15×1=15,15×6=90;当a1b1分别是1和6时,a、b分别为15×1=15,15×6=90;当a2b2分别是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.88888

问他们每一个人分别应该分几个元宝?

在《一代大商孟洛川》中是这样做的

孟洛川拿来一个元宝加上去

好了,开始分元宝

答案是:老大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这个最小公倍数就能分开,最后还剩一个。

编程实现

编辑

CoffeeScript

gcd = (a, b) -> # 最大公约数   return gcd b, a if a < b   # a,b中如果有一是0,回答另一   if b is 0 then a else gcd a % b  scm = (a,b)->  # 求最小公倍数   a * b / gcd(a, b)

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;  } }

Python

def gcd(n1,n2):     """greatest common divisor function """     return gcd(n2, n1 % n2) if n2 > 0 else n1 def lcm(n1,n2):     """lowest common multiple function"""     return n1 * n2 // gcd(n1, n2)

下一篇 闰日

上一篇 顺序