티스토리 뷰
https://school.programmers.co.kr/learn/courses/30/lessons/12921
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
에라토스테네스의 체
에라토스테네스의 체는 '특정 범위 내의 소수'를 판정하는 데에만 효율적이다. 만약 주어진 수 하나가 소수인가? 만을 따지는 상황이라면 이는 소수판정법이라 해서 에라토스테네스의 체 따위와는 비교도 안되게 빠른방법이 넘쳐난다.
한편, 에라토스테네스의 체를 이용해 1~n까지의 소수를 알고 싶다면, n까지 모든 수의 배수를 다 나눠 볼 필요는 없다. 만약 n보다 작은 어떤 수 m이 라면 와 중 적어도 하나는 루트 이하이다. 즉 n보다 작은 합성수 m은 루트 보다 작은 수의 배수만 체크해도 전부 지워진다는 의미이므로, 루트 이하의 수의 배수만 지우면 된다.
ex) n = 49, m = 48이고 a가 6, b가 8이라면 -> 적어도 하나의 수 a는 루트 n인 7보다 작다.
function solution(n) {
let arr = Array(n + 1)
.fill(true)
.fill(false, 0, 2);
for (let i = 2; i * i <= n; i++) {
if (arr[i]) {
for (let j = i * i; j <= n; j += i) {
arr[j] = false;
}
}
}
return arr.filter((e) => e).length;
}
console.log(solution(10));
1. Array(n+1) 로 length가 n+1인 빈 슬롯을 가진 배열을 만든다.
function solution(n) {
let arr = Array(n + 1);
return arr;
}
console.log(solution(10)); // [ <11 empty items> ]
왜 n+1 일까?
배열의 index가 0부터 시작하기 때문.
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 이어야 arr[0] = 0 이렇게 0부터 자연수 n까지 요소들을 순서대로 넣을 수 있다.
단일 매개변수 배열 생성자
배열을 생성자와 하나의 숫자 매개변수로 생성할 수 있습니다. 그 결과는 length가 매개변수고, 길이만큼의 빈 슬롯을 가진 배열입니다.
let fruits = new Array(2)
console.log(fruits.length) // 2
console.log(fruits[0]) // undefined
2. fill(true)로 모든 요소를 true로 만든 다음, fill(false, 0, 2)로 0과 1에 해당하는 값을 false로 바꾼다. 0과 1은 소수가 아니기 때문.
function solution(n) {
let arr = Array(n + 1)
.fill(true)
.fill(false, 0, 2);
return arr;
}
console.log(solution(10));
/* [
false, false, true,
true, true, true,
true, true, true,
true, true
] */
3. 에라토스테네스의 체로 2부터 자연수 n까지의 소수 판별하기
3-1. let i=2 2부터 반복문을 돌림. i*i <=n i 의 제곱이 n보다 작거나 같은 동안 반복할 것임. i++ i는 계속 증가
ex) n이 10일 때 console.log(i)하면 2 3이 나옴
3-2. arr[i] 는 true 임. if문으로 true인 경우 이중 반복문을 돌리도록 함
3-3. 이중 반복문으로 배수를 모두 false로 바꿈.
ex) n이 10일 때 console.log(j)하면 4 6 8 10 9가 나옴
i = 2 일 때 j = 4이고 j+=i 로 j 는 4 6 8 10 이렇게 증가함
3-4. 배열 arr 을 filter((e) => e) 로 true만 있는 새로운 배열로 반환하고 그 length를 구함.
-> i = 루트 j (i * i 즉 i 의 제곱은 j)
-> true는 소수 false는 소수가 아닌 수
에라토스테네스의 체 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 수학에서 에라토스테네스의 체는 소수를 찾는 방법이다. 고대 그리스 수학자 에라토스테네스가 발견하였다. 알고리즘[편집] 2부터 소수를 구하고자 하는 구간
ko.wikipedia.org
에라토스테네스의 체 - 나무위키
임의의 자연수 n에 대해 그 이하의 소수를 찾는 가장 간단하고 빠른[2] 방법이다. 예를 들어 1~100까지 숫자 중 소수를 찾는다 하자. 일단 1부터 100까지 숫자를 쭉 쓴다. 1234567891011121314151617181920212223
namu.wiki
코딩테스트 #14 소수 찾기 (에라토스테네스의 체)
에라토스테네스의 체 진짜 개쉽게 설명하고 싶었는데 말이 꼬임
velog.io
https://mine-it-record.tistory.com/507
[알고리즘] 소수 찾기 - 에라토스테네스의 체 by javascript
소수를 찾는 수많은 방법중에서 가장 많이 사용된다는 "에라토스테네스의 체" 라는 소수 찾기 알고리즘에 대해 알아보자. 우선 소수란 무엇일까? 소수란 간단하게 1과 그 수 자신 이외의 자연수
mine-it-record.tistory.com
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Array
Array() 생성자 - JavaScript | MDN
Array() 생성자는 새로운 Array 객체를 생성할 때 사용합니다.
developer.mozilla.org
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/fill
Array.prototype.fill() - JavaScript | MDN
fill() 메서드는 배열의 시작 인덱스부터 끝 인덱스의 이전까지 정적인 값 하나로 채웁니다.
developer.mozilla.org
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
Array.prototype.filter() - JavaScript | MDN
filter() 메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환합니다.
developer.mozilla.org
'TIL' 카테고리의 다른 글
[TIL] Toss SLASH23_230608 (0) | 2023.06.08 |
---|---|
[TIL] 230501 (0) | 2023.05.01 |
[TIL] 230318 React_dropDown, 대용량 처리, progressBar (0) | 2023.03.18 |
[TIL] 230315 정신없어요 (0) | 2023.03.15 |
[TIL] Typescript 세팅 + Chart.js, React 로 리포트 만들기 (0) | 2023.03.07 |