어제 매니저 일을 하고 전날부터 이어진 컨디션인지 많이 안좋았다.
알고리즘 문제 푸는데도 좀 오래 걸렸고 다른 공부도 좀 많이 힘들었다.. 환절기라 그런가 몸관리랑 컨디션 관리를 잘 해야지 주말동안 쉬엄쉬엄 하며 잘 회복하고 다시 평일동안 화이팅! 하고 싶지만 이번 주는 가게를 봐줘야 하는 시간이 많아 공부 시간이 많이 나질 않는다.
알고리즘 문제 0단계 클리어가 몇개 안남았으니 이번주는 그걸 다 하는데 목표로 잡고 리액트 강의 우선순위를 많이 높여서 들어보는 게 좋겠다.
알고리즘 문제 풀기(프로그래머스)
https://github.com/hoinlee-moi/algorithm_prac
오늘은 앞서 배우고 복습했던 문법들로 대부분 풀 수 있었다!
JS기본문법 다시 공부
https://github.com/hoinlee-moi/ModernJS
React 강의 듣기
https://github.com/hoinlee-moi/React_prac
소수 판별법
1. n까지 모두 판별하기
1이 아닌 2부터 n사이의 모든 정수를 다 나누어 떨어지는 수가 있는지 확인하기
const isPrime = (n) => {
for (let i = 2; i < n; i++) {
if (n % i === 0) {
return false;
}
}
return true;
}
2.n의 제곱근 ( n)까지만 계산하기
n의 제곱근(√n)값으로 나누어 떨어지면 √n의 배수라는 뜻이므로 소수가 아니게 된다.
예를 들자면 25의 제곰근은 √25(5) 이다.
이때 5까지만 반복문이 돌아가더라도 25는 5의 배수이므로 i가 5일 때 나누어 떨어지게 되고 소수가 아님을 판별할 수 있게 된다.
다른 예시로 49의 제곱근은 √49(7)인데 29도 7의 배수이므로 i가 7일 때 나누어 떨어지므로 소수가 아님을 알 수 있다.
즉 처음에 소개한 2, 3, 5, 7, 11, 13...의 배수까지는 비교할 필요가 없습니다.
하지만 1은 소수가 아니기에 따로 구분을 해줘야 함
const isPrime = (n) => {
for (let i = 2; i <= Math.ceil(Math.sqrt(n)); i++) {
if (n % i === 0) {
return false;
}
}
return true;
}