티스토리 뷰
소수란?
1보다 큰 자연수 중 1과 자신만을 약수로 가지는 수
시간복잡도 O(N)인 소수 판별법
1보다 큰 자연수가 아닌 경우 걸러준다.
2부터 해당 수 - 1 까지 돌면서, 나누어 떨어지면 소수가 아니므로 걸러준다.
이 때 시간복잡도는 해당 숫자 - 1 까지 확인하므로 O(n)이다.
def isPrime(number):
if number in (0, 1):
return False
for i in range(2, number):
if number % i == 0:
return False
return True
시간복잡도 O(√N) 인 소수 판별법
숫자가 15 이라면 1, 3, 5, 15 이 약수인데 이때 루트 15 (3,xx) 까지만 확인해도 된다.
숫자가 4이라면 1, 2, 4 이 약수인데 루트 4 (2) 까지만 확인해도 된다.
즉 숫자에 루트를 씌운 값이 중간값이므로 그 값까지 확인해서 나누어떨어지면 소수가 아니다.
2에서 n-1 까지 도는 것이 아니라 2에서 n의 제곱근 까지 돈다.
이 때 시간복잡도는 해당 숫자의 제곱근까지 확인하므로 O(√N) 이다.
import math
def is_prime(number):
if number in (0, 1):
return False
for i in range(2, int(math.sqrt(number))+1): # n의 제곱근(정수화)
if number % i == 0:
return False
return True
'Algorithm' 카테고리의 다른 글
DFS & BFS (0) | 2021.12.08 |
---|---|
[프로그래머스][힙] 디스크 컨트롤러 (211114) (0) | 2021.11.14 |
[프로그래머스][완전탐색] 모의고사 (211109) (0) | 2021.11.09 |
heappush vs. heapify 왜 다를까 / 힙 자료구조 (0) | 2021.11.02 |
[Programmers][그리디] 조이스틱 python (211031) (0) | 2021.10.31 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ssafy6기
- 싸피6기
- intj여자
- 임대차3법
- 개발자책추천
- 맥과윈도우로깃허브
- 코딩도서
- ssafy합격후기
- 폰트
- 무료폰트추천
- 디즈니얼굴
- 개발자
- 싸피
- 클린코더
- 개발언어추천
- 개발도서추천
- 깃허브계정
- SSAFY
- ssafy후기
- 브왈라
- 개발언어순위
- 한글무료폰트추천
- ssafy결과
- 클린코드
- 폰트추천
- 개발자로드맵
- 상업용무료폰트
- 깃허브계정2개
- 개발자도서추천
- 개발자커리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함