class Solution {
public int solution(int n) {
int answerCount = 0;
for (int i = 4; i <= n; i++) {
if (isValue(i)) answerCount++;
}
return answerCount;
}
public static boolean isValue(int number) {
int count = 0;
for (int i = 1; i <= Math.sqrt(number) ; i++) {
if (number % i == 0) count++;
}
return count >= 2;
}
}
약수의 갯수가 3개 이상인 수를 찾는 합성수 문제이다.
이 역시 제곱근까지만 판별해도 가능하다.
메서드없이 구현하기엔 코드가 지저분해보여서 별도로 분리하여 작성하였다.
solution 메서드의 반복문에서 4부터 시작하는 이유는 1, 2, 3은 애초에 합성수가 될 수 없기 때문에 4부터 시작하여 불필요한 리소스를 줄였다.