[Python] 소수(Prime Number) 판정

이재원·2023년 10월 10일

Algorithm

목록 보기
16/29
  • 1개의 수를 소수인지 판단하는 알고리즘
import math

# X >= 2

# 시간복잡도 : O(X), 1과 X사이의 숫자로 나누어지는지 확인
def is_prime_number(X):

	for i in range(2, X):
    
    	if X % i == 0:
            # 소수가 아님
        	return False
    
    # 소수
    return True

# 시간 복잡도 : O(X^(1/2)), 가운데 약수 기준 좌우대칭 성질 활용
def is_prime_number(X):

	for i in range(2, int(math.sqrt(X))+1):
    	
        if X % i == 0:
        	#소수가 아님
            return False
    
    return True
  • 에라토스테네스의 체 : 주어진 수 X이하의 모든 소수를 구하는 알고리즘
import sys
import math

# 시간복잡도 : O(NloglogN), N < 1,000,000일 경우 사용

# 주어진 수 X
X = int(sys.stdin.readline().rstrip())

# 1 ~ X까지를 나타내는 리스트, True로 초기화
array = [True] * (X+1)

# 1은 소수가 아님
array[1] = False

# 소수판정
for i in range(2, int(math.sqrt(X))+1):

	if array[i]:
    
    	j = 2
        
        while i * j <= X:
        	
            # i의 배수 이므로 소수가 아님
        	array[i*j] = False
            j += 1

# 1 ~ X까지의 수 중 소수 출력
for i in range(1, X+1):

	if array[i]:
    
    	print(i)

0개의 댓글