Logo
(追記) (追記ここまで)

어디서 틀렸는지 모르겠습니다...

11653번 - 소인수분해

sys를 써라해서 써봤는데 잘 모르겠습니다

while문을 어떻게 빠져나가야 할까요?

대부분의 경우 잘 실행되는데 소수 같은 경우는 무한루프에 빠지고 있습니다.

if 문에 한 번도 걸리지 않기 때문에

sys.exit() 가 실행되지 않고 무한루프에 빠지게 됩니다.

이 상황을 별도로 처리해주셔야 합니다.

(for ~ else ~ 문을 활용하시면 좋을 것 같습니다.)

아아 a가 소수인 경우는 이해했는데 혹시 예제에 72를 넣었을 때 2 2 2 3 3 나오고 나서 끝나지 않는 이유를 모르겠습니다

혹시 알려주실 수 있을까요...?

올리신 코드 돌려보니 문제 없이 끝납니다.

코드에 바뀐 부분이 있나요?

아아 이거 코랩에 돌려봤는데 말씀하신것처럼 19같이 소수 넣어보니까 무한으로 돌아가더라구요ᅲᅲ

저도 Colab 환경에서 실행해봤는데 72를 넣었을 땐 문제가 없는 것 같습니다.

다만 소수가 아니더라도 예제에 있는 6, 9991 같은 경우에는 무한루프가 도는데

이 경우는 원래 수의 제곱근보다 더 큰 수를 소인수로 가지는 경우입니다.

루트 6은 2.xxxx.. 정도지만 6의 소인수 중에는 3도 있죠.

이런 경우에는 영원히 3을 못 찾고 무한루프에 빠집니다.

for 문의 범위를 제곱근까지가 아닌 자기 자신까지로 넓히거나(대신 속도는 느려짐),

for 문 안에서 소인수를 더이상 못 찾는 경우는 제곱근보다 더 큰 소인수가 딱 하나 남았다는 뜻이므로,

그 수(a의 값)를 출력해주고 끝마치는 식으로 해결할 수 있습니다.

자세한 설명 너무 감사드립니다!!

이해했습니다!

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

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /