(23.05.16)
소수 판별 알고리즘
: 숫자 n이 소수인지 아닌지 판별하기
1. n을 2부터 n-1 까지의 숫자들로 나눠보기
def prime(n):
for i in range(2, n):
if n%i==0:
return False
return True
2. n의 제곱근까지의 숫자들로 나눠보기 (약수의 성질 이용)
import math
def prime_sqrt(n):
for i in range(2, int(math.sqrt(n))+1):
if n%i==0:
return False
return True
3. 에라토스테네스의 체
import math
def prime_era(n):
array = [True for i in range(n+1)]
for i in range(2, int(math.sqrt(n))+1):
if array[i]:
x = 2
while i*x <= n:
array[i*x]=False
x += 1
result = []
for i in range(2, n+1):
if array[i]:
result.append(i)
print(result)
시간복잡도: O(NloglogN)
참고자료: 이것이 코딩 테스트다 (나동빈)
728x90
'Coding > Python' 카테고리의 다른 글
DFS, BFS 정리 (0) | 2023.06.19 |
---|---|
[Programmers] lv.1 이상한 문자 만들기 (python) (0) | 2023.05.15 |
[Programmers] lv.0 등수매기기 (python) (0) | 2023.05.10 |
[Python] 문자열 관련 문제들 (''.join(), sorted 활용하기) (0) | 2023.05.09 |
[Programmers] LV.1 이상한 문자 만들기 (python) (0) | 2023.04.19 |