2017-09-19 8 views
-2


안녕하세요,
새 배열을 소수로만 반환하는 함수를 만들고 싶습니다. 내 함수는 소수 만 반환해야하지만 소수를 반환하지는 않습니다. 내 기능을 향상 시키거나 (핵심적으로) 어떻게 개선 할 수 있는지 알려주시겠습니까?
진보 된 감사합니다 !!소수를 사용하여 새 배열을 반환하는 함수 JavaScript

function getAllPrimeNumber(array, num) { 
    array = new Array(); 
     for (var i = 2; i <= num; i++) { 
      for(var j = 2; j < i; j++){ 
       if(i % j==0){break; } 
       array.push(i); 
      } 

     } 
    return array; 
} 
console.log(getAllPrimeNumber([], 5)); //[3, 5, 5, 5] 
console.log(getAllPrimeNumber([], 9)); //[3, 5, 5, 5, 7, 7, 7, 7, 7, 9] 
+0

문제는 무엇인가? –

+0

숫자가 여러 번 밀려 나고 @MattClark – Nazariy

답변

0

당신은 자신을 포함하지 않는 최대 i/2i가 완전히 2까지의 모든 수로 나눈 수 없음을 확인해야합니다 (숫자는 2 경우)에만 다음 배열에 i를 밀어 :

function getAllPrimeNumber(num) { 
 
    var array = []; 
 
    var isPrime; 
 
    for (var i = 2; i <= num; i++) {  
 
    for (var j = 2; (isPrime = i === j || i % j !== 0) && j <= i/2; j++) {} 
 

 
    isPrime && array.push(i); 
 
    } 
 
    return array; 
 
} 
 
console.log(getAllPrimeNumber(5)); 
 
console.log(getAllPrimeNumber(9));