码迷,mamicode.com
首页 > 其他好文 > 详细

2015华为机试——计算两个正整数的最大公约数和最小公倍数

时间:2015-07-13 10:19:47      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:2015华为机试   java   math   

题目描述:

接口说明

原型:

long getMaxDivisor(long lFirstInput, long lSecondInput);

输入参数:

      int first: 第一个整数;

      int second: 第二个整数;

返回值:

    最大公约数

long getMinMultiple(long lFirstInput, long lSecondInput);

输入参数:

      int first: 第一个整数;

      int second: 第二个整数;

返回值:

    最小公倍数


解题思路:使用辗转相除法即可求得最大公约数,两个数的最小公倍数=两数乘积/两数的最大公约数


辗转相除法:

设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:用a除以b,得a÷b=q......r1(0≤r1)。若r1=0,则(a,b)=b;若r1≠0,则再用b除以r1,得b÷r1=q......r(0≤r2).若r2=0,则(a,b)=r1,若r2≠0,则继续用r1除r2……如此下去,直到能整除为止。其最后一个为被除数的余数的除数即为(a, b)。
例如:a=25,b=15,a/b=1......10,b/10=1......5,10/5=2.......0,最后一个为被除数余数的除数就是5,5就是所求最大公约数。
代码如下:
    public static long getMaxDivisor(long lFirstInput, long lSecondInput)
    {
        long mul,temp;
        mul=lFirstInput*lSecondInput;
        while (lFirstInput!=0)
		{
			temp=lFirstInput;
			lFirstInput=lSecondInput%lFirstInput;
			lSecondInput=temp;
		}
        return lSecondInput;
    }
    
    // 功能:获取两个整数的最小公倍数
    // 输入:两个整数
    // 返回:最小公倍数
    public static long getMinMultiple(long lFirstInput, long lSecondInput)
    {
        long mul,temp;
        mul=lFirstInput*lSecondInput;
        while (lFirstInput!=0)
		{
			temp=lFirstInput;
			lFirstInput=lSecondInput%lFirstInput;
			lSecondInput=temp;
		} 
        return mul/lSecondInput;
    }



版权声明:本文为博主原创文章,未经博主允许不得转载。

2015华为机试——计算两个正整数的最大公约数和最小公倍数

标签:2015华为机试   java   math   

原文地址:http://blog.csdn.net/zzc8265020/article/details/46858689

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!