반응형

출처: 프로그래머스 코딩 테스트 연습 문제

문제 설명

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

소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)

제한 조건

  • n은 2이상 1000000이하의 자연수입니다.

입출력 예 설명

입출력 예 #1
1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환

입출력 예 #2
1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환

 

아래 코드는 시간 초과 되였다.

def isPrimary(n):
    isP = True
    for i in range(2,n//2+1):
        if n % i == 0:
            isP = False
            break
    return isP

def solution(n):
    answer = len(list(filter(lambda x: isPrimary(x) , [i for i in range(2, n+1)])))
    return answer

n = 5
solution(n)

아래 방식으로 하니깐 통과하였다.

 

def isPrimary(n):
    isP = True
    for x in range(2, int(pow(n ,0.5))+1):
        if n%x==0 and n!=x:
            isP = False
            break
    return isP

def solution(n):
    answer = len(list(filter(lambda x: isPrimary(x) , [i for i in range(2, n+1)])))
    return answer

n = 5
solution(n)

 

에라토스테네스 소수

 

반응형

'문제 > 프로그래머스' 카테고리의 다른 글

문자열 다루기 기본  (1) 2021.08.28
서울에서 김서방 찾기  (0) 2021.08.22
수박수박수박수박수박수?  (0) 2021.08.20
문자열을 정수로 바꾸기  (0) 2021.08.20
시저 암호  (0) 2021.08.20

+ Recent posts