Back to all posts
소수 찾기
Written by ppotatoG & Posted on November 3rd, 2021
처음 제출한 답
length 계산해서 담아줄 answer 선언
num에 올 수 있는 모든 순자
약수의 갯수를 확인해주기 위한 count
배열 순회하며 약수 확인
몫이 0일 때 count ++
소수 == 약수의 갯수가 2개 answer ++
function solution(num) {let answer = 0;for(let item = 2; item < num + 1; item ++){let count = 0;for(let i = 2; i < item + 1; i ++){if(item % i == 0 ) count ++;}if(count == 1) answer ++;}return answer;}
두번째
답은 맞는데, 런타임이 났던걸로 기억한다
그러면서 찾아봤던 에라토스테네스의 체
스트레스 받는것보단 답 외우는게 더 좋아서 참고한 포스팅
function solution(num){const nArr = new Array(num).fill(false)nArr[0] = true;for(let i = 2; i * i <= num; i++){for(let k = i * i; k <= num; k += i){nArr[k - 1] = true;}}return nArr.filter((cur) => cur === false).length;}
최근 보충 한 내용
arr
= 1을 제외한 배열, 2부터 시작
answer
= 1을 제외한 배열, 0으로 채워짐
소수라면 arr[i] % k === 0
를 했을 때 본인밖에 없으므로
answer
에 값이 1만 애들만 남겨서 길이 반환
아래 코드로 하면 런타임에러ㅋㅋㅠ
function solution12921(num) {const arr = new Array(num - 1).fill(0).map((val, idx) => val = idx + 2);let answer = new Array(num - 1).fill(0);for(let i = 0; i < arr.length; i++){for(let k = 2; k <= arr[i]; k++){if(arr[i] % k === 0) answer[i] ++;}}return answer.filter((val) => val === 1).length;}
소수찾기는 에라토스테네스의 체말고는 답이 없는것같다