본문 바로가기
공부/알고리즘

백준1978_소수찾기

by 미네밍 2016. 12. 21.

문제

주어진 숫자들 중 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

입력

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

출력

주어진 수들 중 소수의 개수를 출력한다.

예제 입력 

4
1 3 5 7

예제 출력 

3


[코드]


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
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt(); // 입력 받은 숫자의 개수
        int count = 0;
        for (int i = 0; i < N; i++) {
 
            int num = sc.nextInt();
 
            for (int j = 2; j <= num; j++) {
                if (j == num) // num 까지 왔다는 소리니까
                    count++;
                if (num % j == 0)
                    break;
            }
        }
        System.out.println(count);
    }
 
}
 
cs

[알고리즘]

그냥 숫자를 하나씩 받아서 2부터 그 숫자까지 나눠줬다. 
num 까지 나눌 수 있다는 것은 결국 아무걸로도 나눠지지 않고 num 으로 나눠진다는 소리니까, count 를 하나 올려준다.
사실 큰 숫자가 들어왔을 때에는 for문을 많이 돌겠지만, 어쨌든간에 소수가 아니라면 
그렇게 for 문을 많이 돌 것 같지는 않아서 무리될 것 같지는 않았다!


'공부 > 알고리즘' 카테고리의 다른 글

백준1934_최소공배수  (0) 2016.12.29
백준5014_스타트링크  (1) 2016.12.27
백준2178_미로탐색  (2) 2016.12.16
백준1094_막대기  (0) 2016.11.29
백준1389_케빈 베이컨의 6단계 법칙  (0) 2016.11.23

댓글