문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
예제입력 | 예제출력 |
4 1 3 5 7 |
3 |
⭕ 풀이
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));
int tc = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
int count = 0;
while(st.hasMoreTokens()){
int num = Integer.parseInt(st.nextToken());
int devideNum = 0;
for(int i=1;i<=num;i++){
if(num%i==0){
devideNum++;
if(devideNum>2){break;}
}
}
if(devideNum==2){
count++;
}
}
System.out.println(count);
}
}
✅ 생각의 흐름
소수는 1보다 큰 자연수 중 1과 자기자신만을 약수로 가지는 수로 정의된다.
즉, 1은 소수가아니며 소수는 1을 포함해 총 약수가 2개라는것이다.
그럼 해당 숫자를 for문으로 i를 1부터 1씩 증가하며
나눠본뒤 해당 숫자를 i로 나눈 나머지가 0이되는 즉 약수를 세어 2라면 해당숫자는 소수란얘기가 된다.
그리고 i를 증가시키며 약수를 세던중 2보다 커진다면 소수가 아니라는 소리니까 break로 탈출한다.
그렇게 for문이 끝났으면 약수가 2인지 확인하고 다음 수를 받아서 진행한다.
-출처
https://www.acmicpc.net/problem/1978
'Algorithm > Baekjoon(Java)' 카테고리의 다른 글
[백준/JAVA] 11653 : 소인수분해 ( 기본 수학 2 ) (0) | 2022.08.09 |
---|---|
[백준/JAVA] 2581 : 소수 찾기 ( 기본 수학 2 ) (0) | 2022.08.08 |
[백준/JAVA] 10757 : 큰 수 A+B ( 기본 수학 1 ) (0) | 2022.08.06 |
[백준/JAVA] 2839 : 설탕 배달 ( 기본 수학 1 ) (0) | 2022.08.05 |
[백준/JAVA] 2775 : 부녀회장이 될테야 ( 기본 수학 1 ) (0) | 2022.08.04 |