用javascript 求出一个数的所有约数,就是可以把它整除的数

JavaScript020

用javascript 求出一个数的所有约数,就是可以把它整除的数,第1张

如下代码可以实现:

<script>

window.onload = function(){

var num = 36 //在这里修改那个数

var v = ""

for(var i = 1 i <= num i++) {

if(num % i == 0)

v += i + ","

}

if(v.length > 0)

v = v.substring(0, v.length - 1)

alert(num + "的所有约数为:" + v)

}

</script>

<script>

        //  封装一个函数玩玩

        function inputTwoNum(){

        var x=prompt("输入两个数字用/隔开"),

        //  var aa = new Array()

          y = x.split("/")//将输入框中的两个数转换成数组

        //  aa[0] = y[0],

        //  aa[1] = y[1]

        return y

        }

            function gys(a,b){

                while(Math.abs(a-b)){

                    t = b

                      b = Math.abs(a-b)

                      a = t

                }

                return b

        }

      var x = inputTwoNum()

      var a = Number(x[0]),

          b = Number(x[1])

        document.write(a+"跟"+b+"最大公约数是:"+gys(a,b))

        第一种:for循环比较两个数因素相等的最大值

          var x=prompt("输入两个数字用/隔开")

        var y = x.split("/"),

        a = y[0],

        b = y[1]

        if(a>b){//两个数的公约数不可能大于其中任何一个数,所以从较小的数字循环比较的,加快效率

            t=a

            a=b

            b=t

        }

        for(i=ai>0i--){//因为是最大公约数,所以从大到小计算

              if(a%i==0){//a的约数

                    if(b%i==0){//a的约数=b的约数

                          document.write(a+"跟"+b+"的最大公约数是:"+i) 

                              break           

                    }

              }

              }

    第二种 while循环,取余结果为零时,被取余的那个数即为最大公约数(数学逻辑)

        function gys(a,b){

              var x=a%b

                while(x){

                    a=bb=xx=a%b

                }

                return b

        }

    var x=prompt("输入两个数字用/隔开")

        var y = x.split("/"),

        a = y[0],

        b = y[1]

        document.write(a+"跟"+b+"的最大公约数是:"+gys(a,b))

          第三种 while循环,更相减损法

      function gys(a,b){

            while(Math.abs(a-b)){

                t = b

                  b = Math.abs(a-b)

                  a = t

            }

            return b

    }

    var x=prompt("输入两个数字用/隔开")

        var y = x.split("/"),

        a = y[0],

        b = y[1]

    document.write(a+"跟"+b+"最大公约数是:"+gys(a,b))

        第四种:递归实现

      function gys(a,b){

              var x=a%b   

              if(x==0){

                  return b

              }

              a = b

              b = x

              x = a%b

                return gys(a,b)

        }

    var x=prompt("输入两个数字用/隔开")

        var y = x.split("/"),

        a = y[0],

        b = y[1]

        document.write(a+"跟"+b+"的最大公约数是:"+gys(a,b))

        </script>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<body>

<script type="text/javascript">

function getgongyueshu(a, b) {

if(b == 0 || a==0) {

return 0

}

return getgongyueshu(b, a % b)

}

var a = 8693724

var b = 92356

var gongyueshu = getgongyueshu(b, a)

console.log(a + "和" + b + "的" + "最大公约数是:" + gongyueshu)

var gongbeishu = a * b / gongyueshu

console.log(a + "和" + b + "的" + "最小公倍数是:" + gongbeishu)

</script>

</body>

</html>