소수 찾기
xnumberOfPrime 메소드는 정수 n을 매개변수로 입력받습니다.
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하도록 numberOfPrime 메소드를 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)
10을 입력받았다면, 1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환
5를 입력받았다면, 1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환
1은 소수가 아니므로 2부터 시작하도록 반복문을 구성한다. i가 2부터 n까지 반복하는 동안 1보다 크고 i보다 작은 수 중에 i가 나누어떨어지는 수가 있으면 소수가 아니므로 break문으로 반복문을 빠져나가도록 했다. 하지만 break문으로 빠져나가도 result++의 위치가 for문 앞이건 뒤이건 한번은 자동으로 더해지게 되어있으므로 빠져나가기 전에 result를 1 감소시킨 후 빠져나가도록 한다.
x
class NumOfPrime {
int numberOfPrime(int n) {
int result = 0;
for (int i = 2; i <= n; i++) {
for (int j = 2; j < i; j++) {
if (i % j == 0) {
result--;
break;
}
}
result++;
}
return result;
}
public static void main(String[] args) {
NumOfPrime prime = new NumOfPrime();
System.out.println(prime.numberOfPrime(10));
}
}
'공부 > algorithm' 카테고리의 다른 글
[programmers] 다음 큰 숫자 (0) | 2018.05.22 |
---|---|
[programmers] 시저 암호 (0) | 2018.05.22 |
[programmers] 하샤드수 (0) | 2018.05.22 |
[programmers] 최솟값 만들기 (0) | 2018.05.22 |
[programmers] 2016년 (0) | 2018.05.22 |
댓글