백준 1929번  www.acmicpc.net/problem/1929

 

 

풀이

 

소수를 구하는 문제이다.

먼저, 소수는 1과 자기자신으로만 나뉠 수 있는 양의 정수이다. 즉, 반대되는 합성수가 아닌 수를 말한다.

(소수 위키백과 참조)

 

소수인지 확인하는 check 메서드를 따로 생성하여 풀이했다.

메서드 내용을 살펴보면,

(소수는 boolean b 을 true 로 반환한다.)

1. 먼저 2보다 작은 수 1은 소수가 아니므로 제외했다.

2. 그리고 2는 소수이므로 판별하는 boolean b 값을 true 로 주었다.

3. 그 이상의 수는 판별을 위해 Math.sqrt(a) 를 사용했다. Math.sqrt(a) 메서드는 숫자의 제곱근을 반환하는 메서드이다. 검사할 숫자를 2부터 그 수의 제곱근까지 for문을 이용해 나누어 보고, 나누어 떨어지면 b 값을 false 로 주었다.

 

이제 이 메서드를 이용해서  n 과 m 사이의 수를 검사해서 그 값이 참이라면 하나씩 출력한다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.Scanner;
 
public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int n = sc.nextInt();
        
        for (int i=m; i<n+1; i++) {
            if(check(i)==true)
                System.out.println(i);
        }
    }
    
     public static boolean check(int a){
        boolean b = true;
        
        if(a<2) b=false;
        else if(a==2) b=true;
        else {
            for (int i=2; i<=Math.sqrt(a) ; i++) {
                if(a%i==0) {
                    b=false;
                    break;
                }
            }
        }
        return b;
     }
    
}
cs
댓글