Programmers > Level 1 > #24 소수찾기 [Python]

 

소수 찾기

 

문제: https://programmers.co.kr/learn/courses/30/lessons/12921

 

 

 

 

 

 

 

1. 문제 설명

 

1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.

 

소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.

 

(1은 소수가 아닙니다.)

 

 

2. 나의 코드

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

- 소수 찾기 문제는 구글링만 하면 쉽게 솔루션을 찾을 수 있지만, 이번 문제에서는 풀이보다 효율성이 더 중요한 문제였다.

- 에라토스테네스의 체를 이용하여 문제를 풀었다.

- 주어진 수의 범위 내에서 순서대로 2의 배수를 지우고, 3의배수를 지우고 이런 방식으로 계속 해서 마지막까지 지운다. 남는 수가 바로 소수!

- Time complexity : O(nlogn)

- 계산의 편리성을 위해 n+1 크기의 리스트를 만든다.

- 더미 부분인 isPrime[0]과 소수가 아닌 isPrime[1] 을 False로 한다.

- 나머지 부분은 True로 세팅

- 두개의 for문을 통해 인덱스가 배수에 해당하면, False로 바꾼다.

- True의 개수를 세고 리턴!

 

 

import math

def solution(n):
    answer = 0
    isPrime = [False]
    isPrime = isPrime + ([True]*n)
    isPrime[1] = False
    
    for i in range(2,n):
        for j in range(2,n):
            if i*j <= n:
                if isPrime[i*j]:
                    isPrime[i*j] = False
            else:
                break
    
    answer = isPrime.count(True)
    return answer

 

3. 다른 사람의 코드

 

-집합인 set을 사용하여, 차집합을 사용해 풀었다.

 

def solution(n):
    num=set(range(2,n+1))

    for i in range(2,n+1):
        if i in num:
            num-=set(range(2*i,n+1,i))
    return len(num)

 

 

[출처] https://dreamhollic.tistory.com/entry/Programmers-Level-1-23-%EC%86%8C%EC%88%98%EC%B0%BE%EA%B8%B0-Python?category=676734

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
918 1932 > DP > #37 정수 삼각형 졸리운_곰 2020.04.12 75
917 Programmers > 2018 서머코딩 > #36 예산 졸리운_곰 2020.04.12 66
916 9084 > DP> #35 동전 졸리운_곰 2020.04.07 102
915 BaekJoon _ 백준 1149 > DP> #34 RGB 거리 졸리운_곰 2020.04.02 93
914 BaekJoon _ 백준 1026 > 탐색> #33 보물 졸리운_곰 2020.04.02 90
913 Programmers > 연습문제 > #32 N-Queen 졸리운_곰 2020.04.01 61
912 Programmers > 연습문제 > #31 2 x n 타일링 졸리운_곰 2020.04.01 70
911 List of freely available programming books 졸리운_곰 2020.03.31 184
910 How to do pointers in Visual Basic file 졸리운_곰 2020.03.26 76
909 Linked List implementation in Visual Basic 졸리운_곰 2020.03.24 51
908 Programmers > 스택/큐(Stack/Queue) > #30 기능개발 졸리운_곰 2020.03.23 65
907 Programmers > #28 winter recruit > #2 [JAVA] 졸리운_곰 2020.03.23 47
906 Programmers > 깊이/너비 우선 탐색(DFS/BFS) > #27 타겟 넘버 [JAVA] 졸리운_곰 2020.03.09 66
905 Programmers > 완전탐색 > #26 소수찾기(level 2) [JAVA] 졸리운_곰 2020.03.09 69
904 Programmers > #25 winter recruit > #1 [JAVA] 졸리운_곰 2020.03.08 47
» Programmers > Level 1 > #24 소수찾기 [Python] 졸리운_곰 2020.03.08 66
902 Programmes > #23 문자열 내 마음대로 정렬하기 [Python] 졸리운_곰 2020.03.08 62
901 Programmers > Hash > #22 위장 [JAVA] 졸리운_곰 2020.03.07 58
900 Programmers > Sort > #21 H-Index [JAVA] 졸리운_곰 2020.03.07 62
899 [Programmers] #20 라면공장 [JAVA] 졸리운_곰 2020.03.06 83
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED