자료구조와 알고리즘/이것이 취업을 위한 코딩테스트다
알고리즘 - 코딩 테스트에서 자주 출제되는 기타 알고리즘(소수 판별 알고리즘)
얄루몬
2021. 11. 24. 17:35
✏소수 = 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의 제곱근(소수점 이하 무시)까지의 모든 자연수에 대하여 연산을 수행한다.