//分别使用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);
        }
    }