문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
코드
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int count = 0;
for(int i = 0; i < N; i++){
int k = sc.nextInt();
boolean Test = true;
if (k == 1){
continue;
}
for (int j = 2; j <= Math.sqrt(k); j++){
if ( k % j == 0){
Test = false;
break;
}
}
if (Test){
count++;
}
}
System.out.println(count);
}
}
풀이
소수.... 처음에 너무 생각 없이 코드를 짰다가 틀렷다. 그래서 구글링을 통해 문제를 풀었다.
여기서 포인트는
1. 1은 소수가 아니다
2. 2 ~ k의 제곱근까지 중 나누어 떨어지는 것이 있는지 판별
3. 2,3인 경우는 자연스럽게 통과 되여 coun++된다.
'Programming > Algorithm' 카테고리의 다른 글
[백준] 11653번 : 소인수분해 (Java) (0) | 2021.08.06 |
---|---|
[백준] 2581번 : 소수 (Java) (0) | 2021.08.06 |
[백준] 10757번 : 큰수 A + B (Java) (0) | 2021.08.02 |
[백준] 2839번 : 설탕 배달 (Java) (0) | 2021.08.01 |
[백준] 2775번 : 부녀회장이 될테야 (Java) (0) | 2021.08.01 |
댓글