티스토리 뷰

programmers.co.kr/learn/courses/30/lessons/12921

 

코딩테스트 연습 - 소수 찾기

1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상

programmers.co.kr

import math

def solution(n):
    answer = 0
    arr = [1] * (n+1)
    for i in range(2, int(math.sqrt(n))+1):
        if arr[i]:
            for j in range(2*i, n+1, i):
                arr[j] = 0
    for i in range(2, n+1):
        if arr[i]:
            answer += 1
    return answer

소수 찾는 방법

: 에라토스테네스의 체 이용하기!

1. 2부터 구하는 수까지 모든 수를 나열 -> 제곱근 이용해서 시간 줄일 수 있음

2. 2부터 자기 자신을 제외한 2의 배수, 3의 배수, 5의 배수, 7의 배수 순서대로 지우기

3. 지워지지 않은 수들이 소수!!

공지사항
최근에 올라온 글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함