문제 1978번
: 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램
[입력]
: 첫 줄에 수의 개수 N. 그 다음으로 N개의 수가 주어진다.
[출력]
: 소수의 개수를 출력
[코드]
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br.readLine();
int result = 0;
StringTokenizer st = new StringTokenizer(br.readLine());
while (st.hasMoreTokens()) {
boolean test = true;
int num = Integer.parseInt(st.nextToken());
if (num == 1)
test = false;
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
test = false;
}
}
if (test) {
result++;
}
}
System.out.println(result);
}
}
[해설]
: br.readLine(); 첫 줄에 개수 N
: int result = 0; 결과 출력할 reulst 지정
: StringTokenizer st = new StringTokenizer(br.readLine()); 첫줄의 입력을 공백 단위로 구분
: while (st.hasMoreTokens()) { StringTokenizer에 사용할 토큰 있는지 확인
boolean test = true; 소수인지 아닌지 판단해줄 boolean 설정
int num = Integer.parseInt(st.nextToken()); 둘째줄부터 입력받는 숫자들
: if (num == 1){ 소수는 1을 포함하지 않으므로 false
test = false; continue 라고 써도 Ok
}
: for (int i = 2; i <= Math.sqrt(num); i++) { number 의 제곱근 만큼 반복
if (num % i == 0) { 2부터 제곱근까지 나눴을 때 나머지가 0으로 깔끔히 나눠 떨어지면
test = false; 입력받은 해당 number은 소수이다
}
}
: if (test) { 소수라고 판정 받았을 때마다 result 카운트
result++;
}
: System.out.println(result); 결과 출력
이제 풀어보러 갈께요 :)

https://www.acmicpc.net/problem/1978
1978번: 소수 찾기
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
www.acmicpc.net
* 독학으로 익히는 코딩이라 틀린 것이 있을 수 있습니다. 오류가 있다면 댓글을 통해 알려주세요. 감사합니다. *
'Baekjoon > [2] 수학' 카테고리의 다른 글
[백준] 4134번 다음 소수 JAVA (자바) 풀이 (0) | 2024.05.09 |
---|---|
[백준] 1057번 토너먼트 JAVA (자바) 풀이 (0) | 2024.04.16 |
[백준] 1934번 최소공배수 JAVA (자바) 풀이 (0) | 2023.08.19 |
[백준] 2609번 최대공약수와 최소공배수 JAVA (자바) 풀이 (0) | 2023.08.18 |
[백준] 10430번 나머지 JAVA (자바) 풀이 (0) | 2023.08.18 |