간단하게 에라토스테네스의 체를 사용하면 풀 수 있는 문제이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
def isPrime(num):
if num == 1:
return False
else:
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
n = int(input())
num = list(map(int, input().split()))
cnt = 0
for i in range(n):
if isPrime(num[i]) is True:
cnt += 1
print(cnt)
|
cs |
처음에 line 13에 있는 cnt =0 이라는 코드를 넣지 않고 돌렸었는데, 이렇게 되면 런타임 에러(NameError)가 뜬다.
이렇게 되는 이유는 아마 채점프로그램의 문제인 것 같기도 한데, 또 특이한 점은 atom의 hydrogen을 통해서 프로그램을 실행시켰을 때도 계속 cnt가 초기화가 되지 않고 쌓이는 현상이 나타난다는 것이다.
정확하지는 않지만, 초기화가 이루어지지 않을 경우, cnt가 할당된 메모리가 해제가 되지 않고 계속 쌓이기 때문인 듯 싶다.
아무튼, cnt = 0으로 제대로 변수를 초기화시켜주면 코드는 제대로 작동한다.
참고로 에라토스테네스의 체는 이전에 풀었던 문제은 다음 링크를 참조하자.
https://gettingtoknowit.tistory.com/89
문제 출처: https://www.acmicpc.net/problem/1978
'코딩 문제풀이 및 연습 > Python 연습' 카테고리의 다른 글
파이썬 입문자는 꼭 알아야 하는 사이트: 파이썬 튜터 (0) | 2021.08.16 |
---|---|
베스킨라빈스 31 게임 파이썬 (0) | 2021.08.15 |
[백준] 2869_달팽이는 올라가고 싶다 파이썬 (시간초과 VS 수학) (0) | 2021.08.08 |
파이썬 실행시간 측정 (0) | 2021.08.07 |
[백준] 1259_팰린드롬수 파이썬 (0) | 2021.08.06 |