用js實現求指定個數的質數


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM