输入两个数x,y,找最大公约数和最小公倍数

如何求最大公约数和最小公倍数,最小公约数是几个数公有的最大约数,最大公倍数是几个数公有的最小倍数。首先应该知道一个公式:最小公倍数=x*y/最大公约数

这样得到最大公约数就可以直接算出最小公倍数。

我们看几种情况:

12   18 最大公约数是6;

7     14 最大公约数是7;

3      7 最大公约数是1;

7      12最大公约数是1;

无非就是这四种情况,其实可以看成三种,我们发现,不管怎样,两个数x,y的最大公约数是不会超过其中最小的数的,那么我们就可以找到输入的两个数中的最小数,使用Math.min(x,y)找到最小数,通过循环语句,从min开始,让两个数同时对min取余,直到取余为整数,那么就找到了

html代码:

        数字1:<input type="text" name="" id="one" value="" placeholder="请输入"/>
        数字2:<input type="text" name="" id="two" value="" placeholder="请输入"/>
        <button οnclick="f1()" id="anniu">点击</button>
        最大公约数是:<input type="text" name="" id="three" value="" />
        最小公倍数是:<input type="text" name="" id="four" value="" />

扫描二维码关注公众号,回复: 14745687 查看本文章

js代码:

    var one = document.getElementById("one");
    var two = document.getElementById("two");
    var three = document.getElementById("three");
    var four = document.getElementById("four");
    function f1(){
        var a = one.value - 0;
        var b = two.value - 0;
        var x = Math.max(a,b);
        var y = Math.min(a,b);
        //因为最大公约数不会超过其中的最小的数,所以找到最小数,从最小数开始遍历,直到他俩都能被同一个数整除,那么这个数就是最大公约数,这时就要跳出循环
        for(i = y; i >= 1; i--){
            if(x % i == 0&& y % i ==0){
            three.value = i;
            //最小公倍数等于两数之积 除以最大公约数
            four.value = x * y / i;
            one.value = "";
            two.value = "";
            break;
            }
            
        }
        
    }

/*写博客的目的时为了记录自己的学习,哪里有不对的,希望大家指点,不希望有恶意攻击的,我现在确实还是个小菜鸟*/

猜你喜欢

转载自blog.csdn.net/weixin_59306092/article/details/119429942