프로그래머가 보는 수학 - 에라토스테네스의 체

2022. 5. 31. 22:58카테고리 없음

728x90

사전지식 : https://aaaag.tistory.com/21

 

프로그래머가 보는 수학 - 소수와 합성수

사전 지식 : https://aaaag.tistory.com/20 소수 : 약수가 1과 자기 자신만 있는 수 더보기 2 == 1, 2 3 == 1, 3 5 == 1, 5 약수의 개수가 2개라면 소수. 다른 표현으론 1과 자기자신으로만 나누어 떨어지는 수를..

aaaag.tistory.com


에라토스테네스의 체 : 임의의 수에서 가장 작은 소수를 찾은 후 그 배수의 수들을 지워서 소수들을 찾는 방법


[예1]

10을 에라토스테네스의 체를 사용해서 소수를 구한다면

  • 2~10까지 숫자를 쓴다(1은 소수가 아니니 제외)
  • 소수2를 제외한 2의 배수들 2, 4, 6, 8, 10을 제거한다
  • 소수3을 제외한 3의 배수들 6, 9를 제거하는데 6은 이미 제거된 상태이다
  • 4는 제거되었으니 제외
  • 소수5를 제외한 5의 배수들을 제거한다
  • 위와 같은 방식으로 10까지 되풀이 한다
  • 에라토스테네스의 체 :  2, 3, 5, 7

프로그래밍 구현

# -*- coding: utf-8 -*-
import sys

number = int(input())

valueList = []
for value in range(2, number + 1):
    valueList.append(value)

resultList = []
while len(valueList) != 0:
    result = 0
    rValue = valueList[0]
    for lValue in valueList:
        if (lValue % rValue) == 0:
            if result == 0:
                result = rValue

            valueList.remove(lValue)

    resultList.append(result)

print(resultList)