HelloMinchan
처음처럼
HelloMinchan
LinkedIn
전체 방문자
오늘
어제
  • 분류 전체보기 (306)
    • Backend (4)
      • NestJS (1)
      • Express (1)
      • Spring (2)
    • Infrastructure (1)
      • AWS (1)
    • Frontend (1)
      • Next.js (1)
    • Language & Runtime (4)
      • Java (2)
      • Node.js (2)
    • Computer Science (8)
      • Computer Networks (3)
      • Operating Systems (4)
      • OOP (1)
    • 독서 (4)
      • 데이터 중심 애플리케이션 설계 (3)
      • 객체지향의 사실과 오해 (1)
    • 회고 (4)
      • Project (2)
      • Career (2)
    • Deprecated (280)

채널

  • GitHub
  • LinkedIn

최근 글

태그

  • programmers
  • 백준Python
  • Algospot
  • Database
  • back-end
  • 데이터베이스
  • 알고스팟
  • 알고스팟Python
  • Baekjoon Online Judge
  • 백엔드
  • 백준
  • 프로그래머스C++
  • 프로그래머스
  • 개발자
  • 프로그래밍
  • front-end
  • 백준Go
  • 코딩
  • 프로그래머스Python
  • 백준C++

최근 댓글

인기 글

hELLO
HelloMinchan

처음처럼

[Algorithm] 에라토스테네스의 체
Deprecated

[Algorithm] 에라토스테네스의 체

2020. 3. 23. 23:24

Algorithm in HelloMinchan

[Algorithm] 에라토스테네스의 체

(글쓴날 : 2020.03.23)

 


* 이 글은 글쓴이가 공부한 내용을 정리하며 올리는 글입니다.


 

 

에라토스테네스의 체


1) 에라토스테네스의 체란?

에라토스테네스의 체란 소수를 구할 때 사용되는 매우 유용한 알고리즘입니다.

소수란 1과 자신을 제외한 약수가 없는 1이 아닌 자연수를 뜻하며,

이러한 소수를 원하는 범위까지 효율적으로 구하고 싶다면 에라토스테네스의 체를 사용하시면 됩니다.

 

에라토스테네스의 체의 주요 원리는 정해진 숫자의 범위 내에서 합성수를 지우는 방식으로,

처음 1은 소수가 아니니 지우고, 남아있는 수 중 제일 작은 숫자인 2를 소수로 판별하여 2의 배수를 모두 지웁니다.

똑같이 남아있는 수 중 제일 작은 수인 3을 소수로 판별하여 3의 배수를 모조리 지우고, 이렇게 판별과 지움을 반복하다 보면 해당 범위 내에 숫자가 소수만 남아있게 됩니다.


2) 코드

변수 maxNum에 판별할 숫자의 범위를 할당해 주시면 되겠고,

소수인지 아닌지 체크할 리스트와 판별된 소수를 저장할 리스트 두 개를 선언해 주시면 되겠습니다.

(Python 기준입니다. 다른 언어는 배열을 선언하시면 됩니다.)

이중 for문을 통해 에라토스테네스의 체가 실행되며, 최종적으로 prime 리스트에 소수들이 저장됩니다.

 

* Python 코드

1
2
3
4
5
6
7
8
9
maxNum = 판별할 숫자의 범위
check = [False, False] + [True] * (maxNum - 1)
prime = []
 
for i in range(2, maxNum + 1):
    if check[i]:
        prime.append(i)
        for j in range(2 * i, maxNum + 1, i):
            check[j] = False

 

저작자표시 비영리 변경금지 (새창열림)

'Deprecated' 카테고리의 다른 글

[Amazon Web Services] AWS란 무엇인가?  (0) 2020.03.25
[Baekjoon Online Judge] 백준 6603번 로또(Python)  (0) 2020.03.24
[Algorithm] 유클리드 호제법  (0) 2020.03.23
[Baekjoon Online Judge] 백준 2609번 최대공약수와 최소공배수(Python)  (0) 2020.03.23
[Baekjoon Online Judge] 백준 1316번 그룹 단어 체커(Python)  (0) 2020.03.23
    'Deprecated' 카테고리의 다른 글
    • [Amazon Web Services] AWS란 무엇인가?
    • [Baekjoon Online Judge] 백준 6603번 로또(Python)
    • [Algorithm] 유클리드 호제법
    • [Baekjoon Online Judge] 백준 2609번 최대공약수와 최소공배수(Python)
    HelloMinchan
    HelloMinchan
    Though you should not fear failure, You should do your very best to avoid it.

    티스토리툴바