데굴데굴

[파이썬] 1978번: 소수 찾기 본문

algorithm/백준

[파이썬] 1978번: 소수 찾기

aemaaeng 2022. 4. 4. 15:17

 

 

1978번: 소수 찾기

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

www.acmicpc.net

n = int(input())

numbers = map(int, input().split())
cnt = 0

for num in numbers:
    error = 0  # for문을 돌 때마다 error가 초기화되도록.
    if num > 1:  # 1은 소수가 아니니까 제외
        for i in range(2, num):
            if num % i == 0:
                error += 1
        if error == 0:
            cnt += 1

print(cnt)

cnt를 만들어서 소수일 때마다 1씩 더하는 부분은 구상했지만 소수를 판별하는 조건을 어떻게 구현하는지 감이 안 와서 결국 구글링했음ㅜㅜ

참고 링크는 여기: 백준 1978번 [파이썬] 소수 찾기 (tistory.com)

그냥 넘어가려다가 직접 설명해보는 연습을 해두는 게 좋을 것 같아서 내 방식대로 설명해보기! 

 

우선 1은 소수가 아니니 제외해야 한다. 따라서 입력받은 수가 1보다 클 때를 조건으로 잡는다. 그 후 2부터 (해당하는 수-1) 까지 하나하나 나눠보는 반복문을 입력한다. 만약 거기서 나눠떨어진다면 error 변수에 1을 더한다. 나눠떨어지지 않은 채 error 변수의 값이 0인 채로 반복문이 끝난다면 해당 수는 소수이므로 cnt에 1을 더해준다. 이제 두 번째 반복문을 돌 때 error는 다시 초기화되고 같은 과정을 반복한다. 

'algorithm > 백준' 카테고리의 다른 글

[파이썬] 1929번: 소수 구하기  (0) 2022.04.20
[파이썬] 2581번: 소수  (0) 2022.04.07
[파이썬] 10250번: ACM 호텔  (0) 2022.03.23
[파이썬] 1193번: 분수찾기  (0) 2022.03.20
[파이썬] 1316번: 그룹 단어 체커  (0) 2022.03.19
Comments