jjh4698   1년 전

시간이 덜걸리도록 sqrt를 사용해서 포문이 돌아가게 하였고

0과 1도 예외처리를 했습니다.


테스트 결과 가장 큰수인 3999999999 를 넣으면 그위에 소수가 없으므로

출력이 안됩니다.

근데 왜 틀린거나 시간초과가 되는지 모르겠습니다.

도와주세요.. ㅠㅠ

yukariko   1년 전

약 3가지 정도 문제점이 보이네요.

1. 답이 4000000000 보다 클수있으니 반복문 설정이 잘못되었습니다.

2. sqrt함수는 실수형이기 때문에 오차가 존재합니다. 오차를 보정해 주거나 오차가 나지 않도록 제곱근만큼 반복해야 합니다.

3. 반복마다 sqrt 함수를 매번 실행시켜 주므로 시간낭비가 큽니다. 변수로 따로 저장해주는것이 좋습니다.

yukariko   1년 전

4. num은 unsigned int형이기 때문에 scanf에서도 %u로 받아야 합니다

테스트해보니 2번은 딱히 안해도 되는것 같네요 1,3,4번만 고쳐주니 해결되었습니다.

jjh4698   1년 전

정말 감사합니다! 덕분에 많은걸 배워가네요 for 비교문 안에 함수를 쓰면 안되겠네요


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