Skip to content

Instantly share code, notes, and snippets.

@shoark7
Created September 16, 2019 13:24
Show Gist options
  • Save shoark7/92a9c750b0883ad46c9200eb4fefc80e to your computer and use it in GitHub Desktop.
Save shoark7/92a9c750b0883ad46c9200eb4fefc80e to your computer and use it in GitHub Desktop.
Judge whether given number is a prime number or not
"""입력 받은 숫자가 소수(prime number)인지 판단하라
:입력: int | 판단할 정수. 크기는 1 이상, 10000 이하
:출력: bool | 입력 받은 정수가 소수인지의 여부
:조건:
1. 1은 원칙상 소수가 아닙니다.
"""
# 1. 가장 정의에 충실한 풀이
def is_prime(n):
if n == 1:
return False
elif n == 2:
return True
elif n % 2 == 0:
return False
else:
sqrt_n = int(n ** (1/2))
for d in range(3, sqrt_n + 1, 2): # 이 range식이 이해가 되시나요?
if n % d == 0:
return False
return True
# 2. 에라토스테네스의 체를 활용한 풀이
SIZE = 10000
CACHE = [True] * (SIZE + 1)
CACHE[0] = CACHE[1] = False
for n in range(2, SIZE+1):
if CACHE[n] == True:
for m in range(2 * n, SIZE+1, n):
CACHE[m] = False
def is_prime(n):
return CACHE[n]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment