zoukankan      html  css  js  c++  java
  • JS 简单算法

    //分别使用while/do-while/for循环实现10的阶乘(使用递归算法)
    
            //do-while循环实现10的阶乘
            var i=1;
            var resule=1;
            do{
                resule *= i;
                i++;
            }while(i<=10);
            console.log(resule);
    
            //while循环实现10的阶乘
            var resule=1;
            var i=1;
            while(i<=10){
                resule *= i;
                i++;
            }
            console.log(resule);
    
            //for循环实现10的阶乘
            var resule=1;
            for(var i=1;i<=10;i++){
                resule *= i;
            }
            console.log(resule);
    
            //构造阶乘函数
            function test(i){
                if(i<1){
                    return 1;
                }else{
                    return test(i-1)*i;
                }
            }
            var resule = test(10);
            console.log(resule);
    
    //有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
    
            //方法一
            for(var i=1;i<=4;i++){
                var a=true;
                for(var j=1;j<=4;j++){
                    for(var k=1;k<=4;k++){
                        if(i==j || i==k || j==k){
                            a=false;
                        }else{
                            console.log(i*100+j*10+k);
                        }
                    }
                }
            }
            //方法二
            for(var i=1;i<=4;i++){
                for(var j=1;j<=4;j++){
                    for(var k=1;k<=4;k++){
                        if(i != j && i != k && j != k){
                            var resule = i*100+j*10+k;
                            console.log(resule);
                        }
                    }
                }
            }
    
    //判断101-200之间有多少个素数,并输出所有素数(只能被1和它本身整除的自然数为素数)
            for(i=101;i<200;i++){
                var a=true;
                for(j=2;j<i;j++){
                    if(i%j == 0){
                        a=false;
                    }
                }
                if(a){
                    console.log(i);
                }
            }
    
    //打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方
    
            //方法一
            for(var a=1;a<=9;a++){
                for(var b=0;b<=9;b++){
                    for(var c=0;c<=9;c++){
                        if(a*a*a + b*b*b + c*c*c == a*100 + b*10 + c){
                            var resule = a*100+b*10+c;
                            console.log(resule);
                        }
                    }
                }
            }
            //方法二
            for(var i=100;i<1000;i++){
                var a = parseInt(i%10);
                var b = parseInt(i/10%10);
                var c = parseInt(i/100);
                if(a*a*a + b*b*b + c*c*c == i){
                    console.log(i);
                }
            }
    
    //求任意两个正整数的最大公约数和(GCD)和最小公倍数(LCM
        //方法一
        var a = 16;
        var b = 44;
        var min = Math.min(a,b);
        var max = Math.max(a,b);
        //for循环求最大公约数
        for(var i=min;i>0;i--){
            if(a%i == 0 && b%i == 0){
                console.log(i);
                break;
            }
        }
        //for循环求最小公倍数
        for(var i=max;i<=a*b;i++){
            if(i%a == 0 && i%b == 0){
                console.log(i);
                break;
            }
        }
        //方法二
        var a = 15;
        var b = 5;
        if(a>b){
            min = b;
            max = a;
        }else{
            min = a;
            max = b;
        }
        console.log(min);
        console.log(max);
        // while循环求最大公约数
        var i=min;
        while(i>0){
            if(a%i == 0 && b%i == 0){
                console.log(i);
                break;
            }
            i--;
        }
        //while循环求最小公倍数
        var j=max;
        while(j<=a*b){
            if(j%a == 0 && j%b == 0){
                console.log(j);
                break;
            }
            j++;
        }
    
    
    //求1000以内的完全数(若一个自然数,恰好与除去它本身以外的一切因数的和相等,这种数叫做完全数。)
        for(var i=2;i<=1000;i++){
            var sum = 1;
            for(var j=2;j<=i/2;j++){
                if(i%j == 0){
                    sum += j;
                }
            }
            if(sum == i){
                console.log(i);
            }
        }
  • 相关阅读:
    C# 打开Word文档错误
    (转)ArcObjects SDK(AE)10.1在vs2012安装的方法
    arcgis 10.3 属性表乱码解决方案
    克里格插值结果覆盖指定范围
    MySQL查询不到中文的问题
    集电极开路,漏极开路,推挽,上拉电阻,弱上拉,三态门,准双向口【转】
    老牌激活工具– Microsoft Toolkit 2.4.3 + 详细图文教程【转】
    老牌激活工具 — Microsoft Toolkit 2.5.1正式版【转】
    SoftDevice Specification v1.2
    nRF51822 之 Interrupt
  • 原文地址:https://www.cnblogs.com/lidyfamily/p/11414652.html
Copyright © 2011-2022 走看看