<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!!!
