• 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);
            }
        }
  • 相关阅读:
    Java static keyword
    Final Keyword In Java
    Underscore template
    Query.extend() 函数详解-转载
    js闭包for循环总是只执行最后一个值得解决方法
    mui scroll和上拉加载/下拉刷新
    mui 手势事件配置
    118. 杨辉三角
    [ 周赛总结 ] 第 185 场力扣周赛
    55. 跳跃游戏
  • 原文地址:https://www.cnblogs.com/lidyfamily/p/11414652.html
Copyright © 2020-2023  润新知