求最大公约数和最小公倍数

 

求最大公约数和最小公倍数

        如果数a能被数b整除,a就叫做b的倍数,b就叫做作a的约数.约数和倍数都表示一个数与另一个数的关系,不能单独存在.如只能说16是某数的倍数,2是某数的约数,而不能孤立地说16是倍数,2是约数.

  “倍”与“倍数”是不同的两个概念,“倍”是指两个数相除的商,它可以是整数、小数或者分数.“倍数”只是在数的整除范围内,相对于“约数”而言的一个数字概念,表示的是能被某一个自然数整除的数,它必须是一个自然数.

  几个自然数公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数.例如12,16的公约数有1,2,4,其中最大的一个是4,4是12与16的最大公约数,一般记为(12,16)=4.12,15,18的最大公约数是3,记为(12,15,18)=3.

  常用的求最大公约数的方法是分解质因数法和短除法.

  分解质因数法,把每个数分别分解质因数,再把各数中的全部公有质因数提取出来连乘,所得的积就是这几个数的最大公约数.例如,求24和60的最大公约数.24=2×2×2×3,60=2×2×3×5,24与60的全部公有的质因数是2,2和3,它们的积是2×2×3=12,所以(24,60)=12.

  短除法,先用这几个数的公约数连续去除,一直除到所有的商互质为止,然后把所有的除数连乘起来,所得的积就是这几数的最大公约数.例如,求24,48,60的最大的公约数.(24,48,60)=2×3×2=12

  几个自然数公有的倍数,叫做这几个数的公倍数,其中最小的一个,叫做这几个数的最小公倍数.例如4的倍数有4,8,12,16,……,6的倍数有6,12,18,24,4和6的公倍数有12,24,……,其中最小的是12,一般记为[4,6]=12.12,15,18的最小公倍数是180,记为[12,15,18]=180.

  常用的求最小公倍数的方法:

一、两数相乘法。
如果两个数是互质数。那么它们的最小公倍数就是这两个数的乘积。例如:4和7的最小公倍数就是4×7=28。

质数:就是在所有比1大的整数中,除了1和它本身以外,不再有别的约数,这种整数叫做质数,质数又叫做素数。

二、找大数法。
如果两个数有倍数关系。那么较大的数就是这两个数的最小公倍数。例如:3和15的最小公倍数就是较大数15。
三、扩大法
如果两数不是互质,也没有倍数关系时,可以把较大数依次扩大2倍、3倍、……看扩大到哪个数时最先成为较小数的倍数时,这个数就是这两个数的最小公倍数。例如:18和30的最小公倍数,就是把30扩大2倍得60,60不是18的倍数;再把30扩大3倍得90,90是18的倍数,那么90就是18和30的最小公倍数。
四、两数的乘积再除以两数的最大公约数法。
     这个方法虽然比较复杂,但是使用范围很广。因为两个数的乘积等于这两个数的最大公约数和最小公倍数的乘积。例如:4和6的最大公约数是2,最小公倍数是12,那么,4×6=2×12。为了便于口算,我们可以把两个数中的任意一个数先除以它们的最大公约数,然后再和另一个数相乘。例如:18和30的最大公约数是6,要求18和30的最小公倍数时,可以先用18除以6得3,再用3和30相乘得90;或者先用30除以6得5,再用5和18相乘得90。这90就是18和30的最小公倍数。

输入两个正整数m和n,求其最大公约数和最小公倍数。C语言编程如下:

#include<stdio.h>

void main(){

       int m,n,max,min,swap;

       printf("please input two numbers m,n:");

       scanf("%d,%d",&m,&n);

       if(m>0&&n>0){

              max=m>n?m:n;

              min=m<n?m:n;

              swap=max%min;

              while(swap!=0){

                     max=min;

                     min=swap;

                     swap=max%min;

              }

              printf("Greatest common divisor:%d\n",min);

              printf("Lease common multiple:%d\n",m*n/min);

       }

       else printf("Error!\n");

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值