nmp9981   2년 전

에라토스테네스의 체를 개선하여 시간을 어느정도 줄였으나 여전히 계속 시간초과가 뜹니다.

제가 생각하는 이유는 2가지입니다.

1. 체에서 계산시 한번에 출력하지않고 False 변환 따로 소수목록 나열 따로했다

2. 소인수분해 함수에서 2,3,5,7 순서대로 나누었습니다. 순서대로 나누었던것이 문제였다

또 다른 이유가 있나요?  

djs100201   2년 전

자연수가 100만개, 하나당 크기가 최대 500만까지 들어오기 때문에 쿼리당 logN에 항상 소인수분해를 출력하는 방법을 생각해봅시다. (N은 주어진 자연수)
에라스토체네스의 체에 그 자연수의 소인수중 가장 작은소인수를 저장하면 항상 logN에 소인수분해할수 있습니다. n=sieve[n]으로 탐색하면, 한번에 최대 1/2씩 곱해지기 때문에
logN에 효율적으로 소인수분해가 가능합니다

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