Lv.0 - 합성수 찾기_01.01

송철진·2023년 1월 1일
0

문제 설명

약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.

제한사항
1 ≤ n ≤ 100

입출력 예

nresult
105
158

나의 코드

function solution(n) {
    let count = 0;
    for(let i=4; i<=n; i++){
        let isNum = false;
        for(let j=2; j<i; j++){
            if(i%j === 0){
                isNum = true;
                break;
            }
        }
        if(isNum === true) count++
    }
    return count
}

풀이

합성수 i는 1과 i외에 다른 자연수로 나누었을 때 나머지가 없는 수이다

  1. 자연수 n이하의 합성수 i는 4부터 n까지 범위 내에 존재한다
let count = 0; // 합성수의 개수
for(let i=4; i<=n; i++){
	// 이하 2~4.입력
}
return count;
  1. 합성수 여부를 변수 isNum으로 선언, 초기화하고
let isNum = false
  1. 합성수 i의 약수j는 2부터 i미만의 범위 내에 존재한다고 할 때
    ij로 나눈 나머지가 0이면 합성수이므로 isNum = true로 재할당하고 순회를 종료시킨다
for(let j=2; j<i; j++){
    if(i%j === 0){
        isNum = true;
        break;
    }
}
  1. 내부 순회를 마치고 isNum = true이면 count를 증가시킨다
 if(isNum === true) count++
  1. 외부 순회가 종료되면 count를 반환한다
profile
검색하고 기록하며 학습하는 백엔드 개발자

0개의 댓글