美文网首页
循环语句

循环语句

作者: 心存美好 | 来源:发表于2021-10-19 16:14 被阅读0次

练习八

游戏玩儿法就是,大家轮流报数,如果报到能被7整除的数字,或者尾数是7的数字,都算踩地雷了。就应该罚唱歌。
请在控制台输出1~60之间的所有“安全数”。
比如:
1、2、3、4、5、6、8、9、10、11、12、13、15、16、18、19、20、22、23、24、25、26、29、30……

方法一
for(var i=1;i<=60;i++){
    if(i % 7==0 || i % 10==7){
        continue;//是不安全数跳出本次循环
    }
        console.log(i);//安全数
    

}

方法二条件取反,就可以去掉contionue
for(var i=1;i<=60;i++){
    if(!(i % 7==0 || i % 10==7)){
        console.log(i);
    }
}
方法三 继续优化,短路算法
for(var i=1;i<=60;i++){
    !(i % 7==0 || i % 10==7) && console.log(i);
}

第九题:

水仙花数是一种特殊的三位数,它的特点就是,每个数位的立方和,等于它本身。
比如153就是水仙花数。因为:
1 3+53+33 = 153
100~999之内,只有4个水仙花数,请编程找出来。

for(var i = 100; i <1000; i++){
    var gw = i % 10;
    var sw = parseInt(i/10)%10;
    var bw = parseInt(i / 100);
    var gw3 = Math.pow(gw,3);
    var sw3 = Math.pow(sw,3);
    var bw3 = Math.pow(bw,3);
    if(gw3 + sw3 + bw3 == i){
        console.log(i);
    }
}
合并
for(var i = 100; i <1000; i++){
    var gw = i % 10;
    var sw = parseInt(i/10)%10;
    var bw = parseInt(i / 100);
    if(Math.pow(gw,3) +  Math.pow(sw,3) + Math.pow(bw,3) == i){
        console.log(i);
    }
}
方法二
    var result=0;
    var num=i;
    while(num){
        result += Math.pow(num % 10,3);
        num=parseInt(num / 10);
    }
    if(result==i){
        console.log(i);
    }
}

第十题

如果一个数恰好等于它的因数(除了这个数字自身)之和,则称该数为“完美数”。
例如:
第1个完全数是6,它有因数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。
第2个完全数是28,它有因数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。
试寻找1~10000之间的所有完美数。

for(var i=1;i<=1000;i++){
    var result=0;
    for(var j=1;j<i;j++){  //j<i,没有=i这已经去除本身
       if(i %j==0){
           result += j;
       }
    }
    if(result==i){
        console.log(i);
    }
}

第十一题

苹果3元一个,鸭梨2元一个,桃子1元一个。现在想用200元买100个水果,在控制台中列出所有可能性

console.time("a");
for(var i=0;i<=100;i++){
    for(var j=0;j<=100;j++){
        for(var k=0;k<=100;k++){
            if(i+j+k==100 && 3*i+2*j+k==200){
                console.log("符合条件的水果数量是"+" "+ i+" "+j+" "+k);
            }
        }
    }
}
console.timeEnd("a")  //显示打印时间
方法一优化
for(var i=0;i<=50;i++){     //200元苹果最多可以买不到70个,同时还要满足100个水果的条件,所以苹果最多50个
    for(var j=0;j<=100;j++){
        var k=100-i-j //梨子数量不用循环了,是100-i-j
         if(3*i+2*j+k==200){
                console.log("符合条件的水果数量是"+" "+ i+" "+j+" "+k);
            
        }
    }
}

第十二题

用户输入一个数字,判断这个数字是否是质数。

var num = parseInt(prompt("请输入数字"));
var count=0;
for(var i=1;i<=num;i++){
    if(num % i ==0){
        count++
    }
}
if(count==2){
        console.log(num +"是一个质数");
}
优化 利于扩展的
    var count=0;
    for(var i=1;i<=num;i++){
        if(num % i ==0){
            count++
        }
    }
    if(count==2){
        console.log(num +"是一个质数");
    }
}
再优化 循环里去掉1和自身 count个数为0
for(var num=1;num<=100;num++){
    var count=0;
    for(var i=2;i<num;i++){
        if(num % i ==0){
            count++
        }
    }
    if(count==0){
        console.log(num +"是一个质数");
    }
}
再优化count只有不为0了就不是质数,所以找到一个就终止,通过函数
function aa(num){
       for(var i=2;i<num;i++){
        if(num % i ==0){
          console.log(num + "不是一个质数");
          return;//函数终止条件
        }
    }
        console.log(num +"是一个质数");
 }
 aa(9)

相关文章

网友评论

      本文标题:循环语句

      本文链接:https://www.haomeiwen.com/subject/rsaooltx.html