Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

에라토스테네스의 체를 사용하여 소수 찾기 JavaScript

<시간/>

n과 같이 숫자를 받는 JavaScript 함수를 작성해야 합니다.

함수는 1과 n 사이의 모든 소수의 배열을 반환해야 합니다.

접근

첫 번째 단계는 모든 값이 true로 초기화된 주어진 숫자만큼 큰 배열을 만드는 것입니다. 배열 인덱스는 모든 가능한 소수를 나타내며 처음에는 모두 참입니다.

그런 다음 2에서 주어진 숫자의 제곱근까지 반복하는 for 루프를 만듭니다. 정의에 따라 모든 정수의 곱은 소수가 될 수 없으며 0과 1은 소수에 영향을 미치지 않으므로 0과 1은 무시됩니다.

마지막으로 모든 소수에 도달하도록 모든 거짓 값을 간단히 걸러낼 수 있습니다.

예시

 const num =100; const findPrimes =(num =10) => { const numArr =새로운 배열(숫자 + 1); numArr.fill(참); numArr[0] =numArr[1] =거짓; for (let i =2; i <=Math.sqrt(num); i++) { for (let j =2; i * j <=num; j++){ numArr[i * j] =false; } } return numArr.reduce((acc, val, ind) => { if(val){ return acc.concat(ind); }else{ return acc; }; },[]);};console.log( findPrimes(숫자));

출력

콘솔의 출력은 -

<전>[ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]