<script>
//获取1000以内的质数
function check(num){
if(index%2){
for(var j=2;j<index;j++){
if(index%j==0){
return false;
}
}
}else{
return false;
}
return true;
}
console.time("hello");
var nums = [1,2];
var index = 3;
while(nums.length < 30){
if(check(index)){
nums[nums.length] = index;
}
index++;
}
console.log(nums);
console.timeEnd("hello");
</script>
一下代码是第一次写的
var nums = [1,2];
var index = 1;
while(nums.length < 30){
for(var i=1;i<index;i++){
if(index%2){
for(var j=2;j<index;j++){
if(index%j==0){
break;
}
}
if(nums[nums.length-1]<index){
nums[nums.length] = index;
}
}else{
break;
}
}
index++;
}
结果测试发现前几个质数找到了,后几个有错误,经分析是因为在一个数不是质数的时候没能跳出for,虽然知道break可以跳出for,但是对于双重for循环,break就显得不行了,此时就在思考,如何能够跳出双重for循环呢?灵机一动,突然想到了神奇的return,return就不在乎有多少层for循环了,于是乎问题就解决了!
其实最关键的就是思路问题,经验问题,如何跳出多重for循环--return!!!
原文:https://www.cnblogs.com/liwuming/p/10292917.html