js知识点05

1,判断101-200之间有多少个素数?   

 for (var i = 101; i <= 200; i++) {

        for (var j = 2; j <=i; j++) {

            if (i % j == 0)

                break;

        }

        if (j == i) {

            document.write(` ${i}为素数`);

            document.write("<br>");

        }

    }

for(var i = 101; i < 201; i++){

        var result = true; //用来标记当前数字i是否是素数,true代表是

        for(var j = 2; j < i; j++){

            if(i % j == 0){

                result = false;

                break;

            }

        }

        if(result){

            document.write(`<h5>${i}是一个素数</h5>`);

        }

    }

    document.write(`<hr />`);

2,一个数如果恰好等于它的因子之和,这个数被称为完数。比如6=1+2+3 编程求出1000以内的所有完数

   

for (var i = 1; i <= 1000; i++) {

        var s = 0;

        for (var j = 1; j <= Math.floor(i/2); j++) {

            if (i % j == 0) {

                s = s +j;

            }

        }

        if (i == s) {

            document.write(` ${i}恰好等于它的因子之和`);

            document.write("<br>");

        }

    }

3,猴子吃桃问题:猴子第一天摘了若干个桃子,当即吃了一半,还不过瘾又多吃了一个。第二天早上又吃了剩下桃子的一半,之后又多吃了一个。以后每天早上都是一样。到第10天时发现只剩下1个桃子,问猴子第一天共摘了多少个桃子?

  var i, t = 1;

    for (i = 9; i > 0; i--) {

        t = 2 * (t + 1);

    }

    document.write(`第一天共摘了${t}个桃子`);

    document.write("<br>");

   4,有一对幼兔,幼兔一个月后长成小兔,小兔一个月后长成成兔并生下一对幼兔,问8个月后有多少对兔子,成兔,小兔,幼兔对数分别是多少?

   var youtu=1;

    var xiaotu=0;

    var chengtu=0;

    for(var i=1;i<9;i++){

        if(i==1){

            youtu=1;

            xiaotu=0;

            chengtu=0;

        }

        else{

            chengtu=chengtu+xiaotu;

            xiaotu=youtu;

            youtu=chengtu*2;

        }

    }

    document.write(`成兔对数${chengtu}小兔对数${xiaotu}幼兔对数${youtu}`);

    document.write("<br>");

 5,约瑟夫环(约瑟夫问题):有10个俘虏(以编号1,2,3...10分别表示)围坐在一起。从编号为1的人开始报数,数到3的那个人被拉出去枪毙;他的下一个人又从1开始报数,数到3的那个人又被拉出去枪毙;依此规律重复下去,直到最后一个人,求最后剩下的的那个人的编号,并输出被枪毙人的编号顺序?(经典思考题)

    var arr = [1,1,1,1,1,1,1,1,1,1];

    var count = 0; //存储当前俘虏报的数字

    var life = 10; //存活俘虏的数量

    var index = 0; //下标用来标记当前游戏到了第几个人

    while(life > 1){

        if(arr[index] == 1){

            count++;

            if(count == 3){

                arr[index] = 0;

                count = 0;

                life--;

                document.write(`俘虏编号${index+1}->`);

            }

        }

        index++;

        if(index >= arr.length){

            index = 0;

        }

    }

6,

求二维数组中的每一行的最大值和每一列的最小值,并且输出最大值和最小值在二维数组中的下标

    for(var i = 0; i < arr1.length; i++){

        var temp = arr1[i];

        var max = temp[0];

        for(var j = 1; j < temp.length; j++){

            if(max < temp[j]){

                max = temp[j];

            }

        }

        //寻找temp中的最大值

        for(var j = 0; j < temp.length; j++){

            if(max == temp[j]){

                document.write(`<p>最大值为${max},下标为${i}-${j}</p>`);

            }

        }

    }

    //求列中最小值

    for(var i = 0; i < arr1[0].length; i++){

        //获取列中最小的, i代表列标,j代表行标

        var min = arr1[0][i];

        for(var j = 0; j < arr1.length; j++){

            if(arr1[j][i] < min){

                min = arr1[j][i];

            }

        }

        //输出最小值的下标

        for(var j = 0; j < arr1.length; j++){

            if(min == arr1[j][i]){

                document.write(`<p>最小值为${min},下标为${j}-${i}</p>`);

            }

        }

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值