https://www.acmicpc.net/problem/1978
문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
접근 과정
소수는 고등학교 이후로 처음 본 단어다... 소수가 무엇이었는지 기억이 잘 나지 않았다.
https://ko.wikipedia.org/wiki/%EC%86%8C%EC%88%98_(%EC%88%98%EB%A1%A0) < 참고
소수는 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수라고 한다.
1의 자리 소수로는 2 , 3 , 5 , 7 등등이 있다.
문제의 목표는 소수가 몇 개인지 찾는 것이다. 소수를 찾는 방법을 알아보았다.
라고한다. 반복문의 조건식과 범위를 잘 설정해보자.
import java.io.*;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(bf.readLine());
StringTokenizer st = new StringTokenizer(bf.readLine(), " ");
int count = 0;
main : for(int i = 0 ; i < N; i++) {
int S = Integer.parseInt(st.nextToken());
if( S == 1 )
continue main;
if(S == 2 || S == 3 || S == 5 || S == 7) {
count++;
continue main;
}
for( int j = 2; j < S; j++) {
if( S % j == 0 )
continue main;
}
count++;
}
System.out.println(count);
}
}
j는 2부터 S까지이다. S를 1씩 증가하는 j로 나누었을 때 0으로 나누어 떨어지지 않으면 count가 1증가하게 만들었다.
느낀점 / 배운점
문제 단계가 올라갈 수록 수학적인 문제도 점점 섞이는 것 같다. 긴장이 된다.
이렇게 문제에서 수학적 개념이나 공식을 학습해보았는데, 다른 문제에서도 배운 것을 활용할 수 있으면 좋겠다.
감사합니다, 이 글이 많은 도움이 되었습니다.