1. 문제 링크
https://www.acmicpc.net/problem/4948
2. 나는 어떻게 생각했는가?
def check_sosu(n):
two_n = 2 * n
a = [False, False] + [True] * (two_n - 1)
primes = []
for i in range(2, two_n + 1):
if a[i]:
primes.append(i)
for j in range(2 * i, two_n + 1, i):
a[j] = False
result = []
for data in primes:
if data > n:
result.append(data)
return result
while True:
n = int(input())
if n == 0:
break
print(len(check_sosu(n)))
- 에라토스테네스의 체 방식을 사용했다.
- 그리고 마지막 부분에서 n보다 작은 값을 걸러서 result라는 배열에 넣었다.
'Algorithm > 알고리즘 문제풀이' 카테고리의 다른 글
백준 1085 파이썬 - 직사각형에서 탈출 (0) | 2021.08.17 |
---|---|
백준 9020 파이썬 - 골드바흐의 추측 (0) | 2021.08.14 |
백준 1929 파이썬 - 소수 구하기 (0) | 2021.08.13 |
백준 11653 파이썬 - 소인수분해 (0) | 2021.08.12 |
백준 2581번 파이썬 - 소수 (0) | 2021.08.12 |
댓글