✏소수 = 1과 자기 자신을 제외하고 나누어 떨어지지 않을 때 소수라고 한다.
#소수 판별 함수(1은 소수가 아니기때문에 2이상의 자연수부터)
def is_prime_number(x):
#2부터 x-1 까지 모든 수를 확인하면서 소수 판별 진행
for i in range(2,x):
#x가 해당 수로 나누어 떨어지는 경우 소수가 아니기에 False 리턴해준다.
if x%i == 0:
return False
#자기 자신과 1로만 나누어지는 수이기 때문에 소수 True 리턴
return True
✏소수의 판별: 기본적인 알고리즘 성능 분석
- 2부터 x-1까지 모든 자연수에 대해서 연산을 수행해야 한다
- 모든 수를 하나씩 확인한다는 점에서 시간 복잡도는 O(x)이고 x의 수에 비례해서 시간 복잡도가 늘어나게 된다.
import math
#소수 판별 함수(2이상의 자연수에 대해서)
def is_prime_number(x):
#2부터 x의 제곱근까지 모든 수를 확인하며
for i in range(2,int(math.sqrt(x))+1):
if x % i == 0:
return False
return True
✏소수의 판별: 개선된 알고리즘 성능 분석
- 2부터 x의 제곱근(소수점 이하 무시)까지의 모든 자연수에 대하여 연산을 수행한다.
'자료구조와 알고리즘 > 이것이 취업을 위한 코딩테스트다' 카테고리의 다른 글
알고리즘 - BFS(Breadth-First Search) (0) | 2021.10.12 |
---|---|
알고리즘 - 기타 그래프 관련 알고리즘 (위상 정렬 알고리즘) (0) | 2021.09.30 |
알고리즘 - 기타 그래프 관련 알고리즘 (크루스칼 알고리즘) (0) | 2021.09.24 |
알고리즘 - 기타 그래프 관련 알고리즘 (서로소 집합을 이용한 사이클 판별) (0) | 2021.09.24 |
알고리즘 - 기타 그래프 관련 알고리즘 (서로소 집합) (0) | 2021.09.24 |