멋쟁이v의 개발일지

[백준 1978번] 소수 찾기(파이썬) 본문

0년차/알고리즘(기본 수학)

[백준 1978번] 소수 찾기(파이썬)

멋쟁이v 2022. 12. 2. 09:00
728x90
320x100
문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

 

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

 

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

 


 

풀이
주어진 숫자 중 소수가 있는지 없는지 찾는 문제입니다.
소수 : 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수
1을 제외하면 자기 자신만을 약수로 가진다는 뜻이네요.

2~자기 자신까지 차례로 나눴을 때 나누어 떨어지는 수가 자기 자신 하나뿐입니다.

7을 예로 들면
7 % 2 = 1
7 % 3 = 1
7 % 4 = 3
7 % 5 = 2
7 % 6 = 1
7 % 7 = 0
나누어 떨어지는 수가 1개 이므로 7은 소수입니다.

코드를 순서대로 작성한다면
1. 주어지는 수를 입력
2. 소수의 갯수를 셀 변수를 선언
3. 주어지는 수를 하나씩 대입
    3-1. 나머지가 0인 갯수를 셀 변수 선언
    3-2. 1은 제외, 2 ~ 주어지는 수까지 나머지가 0인 갯수를 변수에 저장
    3-3. 나머지가 0인 갯수가 1개이면 소수 갯수 변수에 +1
4. 소수 갯수 출력


작성 코드
N = int(input())
A = list(map(int, input().split()))
answer = 0 # 소수 갯수를 셀 변수

for i in A: # 입력된 수를 하나씩 확인
    cnt = 0 # 나머지가 0인 갯수를 셀 변수 ( 입력된 수를 하나씩 확인할 때마다 0으로 초기화 )
    
    if i == 1: # 1일 땐 무시
        continue
    
    for j in range(2, N+1): # 2부터 입력된 수까지 나머지를 확인
        if i % j == 0: # 나머지가 0이면 변수에 +1
            cnt += 1
    
    if cnt == 1: # 나머자기 0인 갯수가 1개이면 소수
        answer += 1 # 소수 갯수 +1
        
print(answer)
728x90
320x100
Comments