alftjd1   4년 전

시간 초과 문제가 발생하는데 해결방법을 여쭙고 싶습니다.

(참고 : 입력케이스는 6<=n<=1000000 이므로 1~5는 정상적으로 작동하지 않습니다.)

1207koo   4년 전

Sieve_of_Eratosthenes를 여러 번 실행할 이유가 없습니다.

n<=1000000이라면 Sieve_of_Eratosthenes(1000000짜리) 를 한 번만 실행해도 되지 않을까요?

어차피 배열 값이 n에 따라 달라지는 것도 아니니깐요(n에 따라 길이가 달라지긴 하지만 어차피 n이 작을 때는 부분 배열이 되므로 상관 없습니다)

그리고 n=4가 안 들어옵니다

그러므로 홀수 소수만 체크하면 되므로(2+2=4가 소수2가 쓰이는 유일한 해) i+=1부분을 i+=2(물론 홀수만 돌 수 있도록 해야 하는데 예외 처리를 좀 해줘야 할 수 있습니다.)

등으로 바꿔서 더 빠르게 할 수도 있습니다.

일단은 첫 번째 것만 바꿔도 시간이 많이 줄어듭니다

alftjd1   4년 전

1207koo님 감사합니다!

덕분에 시간초과 문제를 해결할 수 있었습니다!

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