HeYStRanGeR

(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)

 

 

 

 

 

참고자료: 이것이 코딩 테스트다 (나동빈)

https://github.com/ndb796/python-for-coding-test

728x90
profile

HeYStRanGeR

@HeYStRanGeR

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!