IT 기획의 길

백준 1978번 소수찾기 [JAVA] 본문

알고리즘(백준)/수학

백준 1978번 소수찾기 [JAVA]

완벽하기 쉽지 않지만 완벽해지려고 노력해야 한다 2021. 1. 7. 21:15

문제

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

입력

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

출력

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

 

 

 

알고리즘 설계

 

1. 소수란 1과 자기자신만을 약수로 갖는 1보다 큰 수를 말한다 

2. 소수냐 아니냐를 true & false로 지정한다

3. 1은 무조건 false이다

4. 2보다 크고 자기 자신보다 작은 수로 나눠지는 경우가 1번이라도 있는 수는 소수가 아니다 

5. 3,4를 통과한 수는 소수이다  

6 count변수로 입력한 수중 소수가 몇개인지 check한다

7.

if(prime(arr[i])){
count++;
}

를 사용하여 true인 경우 count를 증가시켜준다

 

 

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int []arr = new int[n];
        int count=0;

        for (int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
            if(prime(arr[i])){
                count++;
            }

        }
        System.out.print(count);

    }

    public static boolean prime(int a) {
        if (a == 1) {
            return false;
        } else if (a > 1) {
            for (int i = 2; i < a; i++) {
                if (a % i == 0)
                    return false;
            }
        }
        return true;

    }

}