yeslee5004   3년 전

에라토스테네스의 체를 이용해서 풀었는데 어떤 코드에서 시간이 초과되는건지 잘 모르겠습니다.

dietomorrow   3년 전

별개로 else문을 쓰신 이유는 무엇인가요?

sieve.remove(k)는 shift연산이 일어나서 O(N)의 시간이 걸리는 작업입니다.

yeslee5004   3년 전

그러네요;

그래서 밑 부분을 이렇게 수정했는데도 같은 시간 초과가 나옵니다. 

elif j < k:
    if k % j == 0:
        sieve.remove(k)

dietomorrow   3년 전

remove에 O(N)의 시간이 소요되어 똑같습니다.

보통 에라토스테네스의 체를 사용할 때 수의 범위의 bool 배열을 만들어서 소수가 아니면 False로 만들어주고 True인 경우 출력해주는 식으로 사용합니다.

댓글을 작성하려면 로그인해야 합니다.