기억은 짧고 기록은 길다
[프로그래머스/Programmers] 소수 찾기_1 - Python 본문
Link
코딩테스트 연습 - 소수 찾기
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상
programmers.co.kr
Solution
해당 문제는 에라토스테네스의 체를 사용하지 않으면 효율성 테스트를 통과할 수 없다.
에라토스테네스의 채는 (int(n ** 0.5) + 1)까지의 수들의 배수들을 지워나가며 소수를 구해내는 방법이다.
def solution(n):
sieve = [True] * (n + 1)
m = int(n ** 0.5)
for i in range(2, m + 1):
if sieve[i] == True:
for j in range(i + i, n + 1, i):
sieve[j] = False
return sieve.count(True) - 2
🔑 key point: 에라토스테네스의 체
Other Solution
def solution(n):
num=set(range(2, n + 1))
for i in range(2, n + 1):
if i in num:
num -= set(range(2 * i, n + 1, i))
return len(num)
'CodingTest > programmers' 카테고리의 다른 글
[프로그래머스/Programmers] 시저 암호 - Python (0) | 2021.08.31 |
---|---|
[프로그래머스/Programmers] 수박수박수박수박수박수 - Python (0) | 2021.08.31 |
[프로그래머스/Programmers] 서울에서 김서방 찾기 - Python (0) | 2021.08.27 |
[프로그래머스/Programmers] 문자열을 정수로 바꾸기 - Python (0) | 2021.08.27 |
[프로그래머스/Programmers] 문자열 다루기 기본 - Python (0) | 2021.08.27 |
Comments