pds8462   3년 전

N 보다 작은 소수를 모두 찾은 뒤, 소수로 하나씩 나눠보면서 소인수분해를 진행했습니다.

문제에선 1 <= N <= 10,000,000 이라고  명시되어 있어서

5,000,000과 10,000,000 같이 큰 수를 넣어서 돌렸을 때는 타임오버가 나오더라구요

시간을 단축 하는 방법이 뭐가 있는지 힌트라도 주시면 감사하겠습니다 ㅠ

appie701   3년 전

굳이 소수들을 구해서 나눠주실 필요가 없어요. 그냥 n을 for문에서 i를 2부터 n-1까지 하나씩 증가시키면서 나눠보고 나눠지면 n = n//i 하고 for문 탈출하고 다시 i = 2부터 for문을 돌리면서 n을 나누어보면 

무조건 소수로만 나누어지게 됩니다. 합성수로 나눠질 경우 그 이전에 이미 소수로 나누어져야 하기 때문에 그렇습니다.

pds8462   3년 전

감사합니다. 문제 해결 됐습니다!!!

시간이 1300ms 나온게 아쉽긴 하지만 그래도 해결되서 기분이 좋네요 ㅎㅎ

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