본문 바로가기

프로그래밍/Algorithm

알고리즘 소수 구하기(Java)

문제 : 첫 번째 줄에는 입력할 수의 갯수를(100개 이하), 두 번째 줄에는 1000 이하의 자연수를 입력하여라.

입력한 수 중에서 소수를 찾아 갯수를 출력하여라

 

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package math;
 
import java.util.Arrays;
import java.util.Scanner;
 
public class findPrimeNumber {
 
    // 첫째 줄에는 입력하는 수의 갯수를 입력(100개 이하 )
    // 둘째 줄에는 첫째줄의 수만큼 수를 입력(1000 이하의 자연수)
    public static void main(String[] args) {
 
        Scanner sc = new Scanner(System.in);
 
        // 소수의 갯수를 담는 변수
        int countPrimeNumber = 0;
 
        int inputCount = sc.nextInt();
        // 100 초과 입력 시 에러 발생 후 종료
        if (inputCount > 100 || inputCount == 1) {
            System.out.println("error : 100개 이하의 수를 입력하시요");
            System.exit(0);
        }
        int inputNumbers[] = new int[inputCount];
        for (int i = 0; i < inputCount; i++) {
            inputNumbers[i] = sc.nextInt();
            if (inputNumbers[i] > 1000) {
                // 1000을 초과하는 수가 입력되면 에러 발생 후 종료
                System.out.println("error : 1000 이하의 수를 입력하시오");
            }
            if(inputNumbers[i] == 2) {
                countPrimeNumber++;
                
            }
            for (int j = 2; j < inputNumbers[i]; j++) {
                if (inputNumbers[i] % j == 0) {
                    break;
                }
                if (j == (inputNumbers[i] - 1)) {
                    countPrimeNumber++;
                    
                }
                
            }
 
        }
        System.out.println(countPrimeNumber);
        System.exit(0);
    }
}
 
cs

처음에 2가 입력되었을때의 값을 생각하지 못했었다.