강의로 돌아가기
김동욱

코드도 그리 길지 않고 충분히 샘플도 통과하는데 문제를 잘 모르겠습니다

효율성은 모두 틀리고요
정확성에서도 몇개는 시간초과가 뜨네요

작성중인 코드―solution.py
1
2
3
4
5
6
7
8
9
10
def solution(n):
    answer = 0
    for i in range(1,n+1):
        dc=0
        for a in range(1,i+1):
            if (i%a==0):
                dc+=1
        if dc==2:
            answer+=1
    return answer
  • 조성진

    에라토스네스의 소수판별에 의하면 1부터 문제에서의 n의 제곱근 까지의 수로 n을 나눴을 때 나눠지지않으면 소수입니다. 따라서 계산을 모든 수 까지 할 필요없이 1~(n의 제곱근) 까지 계산을 해주면 됩니다. 참고로 수가 수를 나누면 몫이 발생하게 되는데 몫과 나누는 수, 둘 중 하나는 반드시 n의 제곱근 이하가 됩니다.

    조성진―2019.10.30 23:19
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.