79brue   9년 전

주석 부분은 이곳에서 실행할 수 없는 부분입니다.

페르마의 소정리 증명을 위해 코딩을 했습니다.

제곱수+1=n, n+1=세제곱수 이것을 충족하는 n은 26밖에 없다는 것을 증명합니다.

코딩에서는 출력 초과가 나옵니다.

그래서 Code::Blocks에서 해봤는데 이상한 2천 몇인가가 갑자기 Wow!를 출력시키더라고요.

계산해보니 그 수는 충족이 안되는데 말이죠.

왜 그럴까요?

h0ngjun7   9년 전

실수 오차 때문에 그런 게 아닐까요. 실수에서 == 연산은 되도록 안 쓰는 게 좋다고 알고있습니다. a랑 b랑 같은지 알고싶으면 |a-b|<=10^(-9) 이런 식으로 하는 게 좋아요.

79brue   9년 전

@hongjun7 전 실수형 변수에 담겨 있는 수가 정수인지 판별하는 if문을 만드려고 했는데, 나머지 연산자에서 문제가 생기네요.

baekjoon   9년 전

오류가 아닙니다.

실수 자료형은 근사값을 저장하기 때문입니다.

@hongjun7 이 말한 대로 두 실수 a와 b가 같은지 알려면 아래 소스와 같이 if문을 작성해야 합니다.

eps값은 적절히 정하면 되지만, 보통 1e-9를 사용합니다.

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