합성수 찾기

Wook·2024년 9월 8일

🧩코딩테스트

목록 보기
29/46
post-thumbnail

문제

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

조건

  • 1 ≤ n ≤ 100

예시

nresult
105
158

풀이

  • 약수가 세 개 이상이므로, 1과 자기 자신 외에 나눌 수 있는 수가 하나라도 있다면 해당됨
  • 1~3은 약수가 세 개가 될 수 없으므로 0을 반환
  • 따라서 4부터 n까지 반복문을 돌면서, 1과 자기 자신 사이의 범위에서 나눌 수 있는 수가 몇 개인지 기록
  • 한 번이라도 나머지가 0이 나오면 count에 기록한 뒤, 즉시 반복을 멈추고 다음 수를 확인

코드

class Solution {
    public int solution(int n) {
        int count = 0;
        if(n < 4){
            return 0;
        }
        
        for(int i = 4; i <= n; i++){
            for(int j = 2; j < i; j++){
                if(i % j == 0){
                    count++;
                    break;
                }
            }
        }
        return count;
    }
}
profile
Keep going

0개의 댓글