문제: https://www.acmicpc.net/problem/1978
이 문제의 원래 의도는 입력이 1,000 이하의 자연수이므로 1부터 1,000까지의 숫자에 대해서
에라토스테네스의 체를 이용해서 소수만 남기고 입력으로 들어오는 숫자들이
소수인지 아닌지 판별하는 것이 원래 목적인 것 같지만
Java의 BigInteger 클래스에서 소수를 판별하는 Method를 제공하므로 그걸 이용해서 풀어보았다.
중간의 isProbablePrime Method에 대한 설명은 다음 링크를 참고하세요.
소스 코드를 참고하세요. 소스 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int numOfInput = scanner.nextInt(); int numOfPrime = 0; for (int i = 0; i < numOfInput; ++i) { BigInteger input = scanner.nextBigInteger(); if (input.isProbablePrime(10)) { numOfPrime++; } } System.out.println(numOfPrime); scanner.close(); } } | cs |