11653번 - 소인수분해
sqrt(10^7)가 대략 3200 근처고 이를 근거로 배열의 크기를 넉넉잡아 3500 정도로 설정하신 것 같은데,
sqrt(10^7)가 3200 정도 된다고 해서 [1, 10^7] 범위 내의 모든 수가 3200 이내의 소수로 소인수분해가 가능하다는 것은 아닙니다.
단적인 예로 3500을 초과하는 수 중 소수인 수 중에 3511이 있으며 이를 소인수로 갖는 10^7 미만의 수는 3511 * 2, 3511 * 3, ... 등 많이 존재할 수 있습니다.
이 경우에 대한 처리를 해주시거나 다른 방법을 생각해보셔야 합니다.
감사합니다.
3500을 초과하는 소수는
if (divisor == 2) // n이 소수인 경우
cout << n;
이 코드에서 걸러져서 밑의 while문에 진입하지 않지 않나요?
댓글을 작성하려면 로그인해야 합니다.
uniyoungking 1년 전 0
알고리즘 초보라 소인수분해 알고리즘을 허접하게 짰다는 거는 맞습니다만..
vs에서는 충분히 잘만 동작하고 동작에 이상이 없을거같은 코드인데 왜 백준에서는
out of bounds를 띄우면서 반려할까요 슨새임들?