Created
September 16, 2019 13:24
-
-
Save shoark7/92a9c750b0883ad46c9200eb4fefc80e to your computer and use it in GitHub Desktop.
Judge whether given number is a prime number or not
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"""입력 받은 숫자가 소수(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