본문 바로가기

문제풀기/백준 문제풀이

[백준 문제 1978번] 소수 찾기 문제

728x90
반응형

https://www.acmicpc.net/problem/1978

 

1978번: 소수 찾기

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

www.acmicpc.net

 

문제 1978) 소수 찾기 문제

 

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

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

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

 

NO 예제 입력 예제 출력
1 4
1  3  5  7
3

 

정답 코드)

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		int a = 0;
		
		for(int i=0; i < n; i++) {
			int num = sc.nextInt();
			int b = 0;
			for(int j=2; j <= num; j++) {
				if(num % j == 0) {
					b++;
				}
				if(b > 1) {
					break;
				}
			}
			if(b == 1) {
				a++;
			}
		}
		System.out.println(a);
	}
}
원하는 개수를 지정하는 n 변수를 입력받고 for문으로 해당 개수만큼 점수를 입력합니다.
이때 중복 for문을 이용해서 j는 2부터 num까지 반복하도록하고 num을 j로 나눈 값이 있으면 b의 개수가 증가하도록 하고 b가 2개 이상이면 for문 밖으로 벗어나고 다시 해당 반복문을 반복하도록 합니다.

b가 1개 일때만 a의 값을 증가시켜 소수의 값만 출력할 수 있도록 만듭니다.

소수 : 1을 제외하고 1과 자기 자신만을 약수로 가지는 수

 

 

다른 코드 예시를 보면 continue를 이용해서 for문을 반복하다 조건에 벗어나면 다시 for문을 수행할 수 있도록 만듭니다.

 

따로 코드는 다루지 않겠습니다!

 

소수 자체는 간단하지만 코드로 구현하는 것은 쉽지 않네요..ㅎㅎ

 

또 다른문제로 가보죠~!!

 

많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

 

728x90
반응형