循环辅助语句

循环辅助语句

案例一:判断素数

三个关键点:
(1)break;提前结束
(2)标志位;因为一开始运行是没有找到的,所以标记立为false,如果找到了,标记就立为true
(3)优化:根据定义,找因子的范围定位[2,n-1],稍微分析一下,最大的因子不会超过n/2,即查找范围可缩小至[2,n/2];根据数学相关定理,判断范围可进一步缩小至[2,sqrt(n)]

var n = Number(prompt("请输入一个自然数:"));
var m = Math.ceil(Math.sqrt(n));//根据数学相关定理,查找范围可缩小至[2,sqrt(n)]
var flag = false;//设置一个找到因子的标记
for(var i = 2;i <= m/*n/2*//*n-1*/;i++){
    if(n % i == 0){
        flag = true;
        break;//找到则提前结束
    
}
}
alert(flag?"不是素数":"是素数");


break:跳出所在的switch或者循环结构

案例二:对100以内不是3的倍数也不是5的倍数的数求和

常规思路:对满足条件的数累加

/* 思路一:
* 1.[1100]范围内每个数进行逐个判断
* 2.如果满足条件就累加
* 3.输出和
* */
    
var sum = 0;//累加和
    
for(var i = 1;i <= 100;i++){
        if(i % 3 != 0 && i % 5 != 0){
            sum += i;
        }
    }
    alert(sum);


另一种思路:不满足条件的就放过

continue:结束本次循环,继续下一次循环

/*思路二:
* 1.[1100]范围内每个数重复步骤23
* 2.如果不满足条件就放过
* 3.累加
* 4.输出结果
* */

var sum = 0;
for(var i = 1;n <= 100;i++){
    if(i % 3 == 0 || i % 5 == 0){
        continue;//结束本次循环,继续下一次循环
    
}
    sum += i;
}
alert(sum);

第二种思路的好处是:结构清晰

也就是我们在进行数据处理之前,先把各种不符合条件的情况先排除,然后在处理符合条件的情况(这个一般是程序的主体)

如果循环体的主体代码的执行有两个前提条件,常规思路是这么写的,如果循环体主体代码较多,该程序的可读性较差

for(...){
    if(条件1){
        if(条件2){
            循环体主体代码(可能代码较多)
        }else{
            alert("错误提示2");
        }
    }else{
        alert("错误提示1");
    }
}

换成另外一个思路来描述,是这样的:

for(......){
    if(!条件1){
        alert("提示错误1");
        continue
    }
    if(!条件2){
        alert("错误提示2");
        continue
    }
    循环体主体代码
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值