약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
1 ≤ n ≤ 100
n이하의 숫자에서 약수의 갯수를 세는 변수를 만들어 값을 넣어준 다음
그 값이 3이상인 약수갯수변수를 answer에 넣어주면 안되나?
class Solution {
public int solution(int n) {
int answer = 0;
int divisor = 0; //약수개수
for (int i = 1 ; i <= n ; i++){ //약수갯수 세기
if(n%i == 0){
divisor++;
}
}
for (int j = 1 ; j <=n ; j++){
if(divisor >=3){
answer++;
}
}
return answer;
}
}
뭔가 전혀 약수의 갯수가 구해지지 않은 느낌...
class Solution {
public int solution(int n) {
int answer = 0;
for (int i = 1 ; i <= n ; i++){
int count = 0; //이 변수 설정이 for문 밖에 있으면
//값이 구해지지 않던데 왜일까...
for(int j = 1 ; j <= i ; j++){
if(i % j == 0){
count ++;
}
}
if(count >= 3){
answer++;
}
}
return answer;
}
}
약수를 구하는 for문을 이중으로 사용해야 했다.
i는 1부터 n까지의 수를 반복문을 이용해 하나씩 가져와서
i를 j로 나눴을때 나머지가 0이면 j가 i의 약수가 되므로
count 변수에 대입해주었다!