1. 인수로 받은 수가 소수인지 판별하는 함수 생성
-> 합성수는 2와 자신의 제곱근 사이에 약수가 반드시 한 개 이상 존재한다는 점을 활용
2. N을 입력받음
3. N보다 크고 2N 이하인 수를 함수에 하나씩 넣어 소수라면 개수를 증가시킴
4. 소수의 개수를 출력함
5. 0이 입력되면 멈춤
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
while(true){
int N = Integer.parseInt(br.readLine()); // N을 입력받음
if(N==0) break; // N이 0이라면 반복문 종료
int cnt = 0; // 소수의 개수를 셀 변수 생성
for(int i=N+1;i<=2*N;i++){ // N보다 크고 2*N 이하인 수에 대해 반복
if(is_prime(i)) cnt++; // 소수라면 개수를 증가시킴
}
System.out.println(cnt); // 소수의 개수를 출력함
}
}
public static boolean is_prime(int n){ // n이 소수라면 true를 반환하는 함수
for(int i=2;i<=(int)(Math.sqrt(n));i++){ // 2부터 n의 제곱근 이하까지 반복
if(n%i==0) return false; // 나눠떨어지면 소수가 아니라는 뜻이니 false를 리턴
}
return true; // 소수라면 true를 리턴
}
}
'[BOJ] - JAVA' 카테고리의 다른 글
[백준]15596 : 정수 n개의 합 JAVA 풀이 (0) | 2022.05.21 |
---|---|
[백준] 9020 : 골드바흐의 추측 JAVA 풀이 (0) | 2022.05.21 |
[백준] 1929 : 소수 구하기 JAVA 풀이 (0) | 2022.05.19 |
[백준] 11653 : 소인수분해 JAVA 풀이 (0) | 2022.05.19 |
[백준] 2581 : 소수 JAVA 풀이 (0) | 2022.05.18 |