이노베이션 캠프/3주차_알고리즘
[JS] 소수 찾기
hani:)
2023. 6. 21. 13:27
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12921
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
풀이1. 짝수 값 포함되어 있을 때
function isPrime(num) {
// 짝수에 대한 처리
if (num % 2 === 0) {
return num === 2 ? true : false;
}
// 짝수에 대한 처리
for (let i=3; i <= Math.floor(Math.sqrt(num)); i+=2) {
if (num % i === 0) return false;
}
return true;
}
function solution(n) {
let count = 0; // 1) 소수 개수를 관리할 변수 선인 및 할당
// for문 사용하여 2부터 n까지 숫자를 하나씩 증감시켜 확인 (1은 소수가 아니기 때문에 2부터 시작)
for (let i=2; i <= n; i++) {
if (isPrime(i)) count++;
}
return count;
}
풀이2. 홀수 값만 있을 때
function isPrime(num) {
for (let i=3; i <= Math.floor(Math.sqrt(num)); i+=2) {
if (num % i === 0) return false;
}
return true;
}
function solution(n) {
let count = 1; // 1) 변수 선언 및 할당: 2일 때는 소수이기 때문에 무조건 +1을 해준 상태에서 시작
// 2) for 사용, 2를 제외한 짝수는 소수가 아니기 때문에 홀수에 대해서만 확인할 예정
// 그래서 i는 3부터 시작하고 +2씩 증가시켜서 확인
for (let i=3; i <= n; i+=2) {
if (isPrime(i)) count++; // 소수인 경우 증감
}
return count;
}
728x90