sqrtの結果が整数かどうかの判別

projecteulerを解いているとたまにこういう需要がある。

簡単な例で言えば、、sqrt(4)=2なので整数だけど、sqrt(5)=2.2360...なので整数じゃないと
厄介なのが、実際の問題はそんなに簡単じゃなくて(当たり前)、調べるべき数も膨大になっているということ

すぐに思いついたのは平方数のリストを準備しておいて、これに含まれていれば、整数というもの
まぁ、中学生レベル(小学生レベル?)ですな。
ただし、prejecteulerで扱う数になると、足りなくなる可能性も高い。
なんといっても、事前予測ができない以上、漏れる可能性もある(これが怖い)

つらつら考えていたら、floorとceilって数学関数があったのを思い出した。
sqrtを両方に突っ込んでみて合致したら整数じゃないの?なんて思いながら実行してみると、
例外(間違い)がちらほら。
これではいけないらしい。

で、少し調べてみるとfloorかceilにsqrtを突っ込んだ返り値とsqrtが合致すればsqrtは整数らしい。
確かめてみると、確かにそういう動きをしている。

これは知らなかった。
これで少しは問題がエレガントに解けるようになったのだろうか?
(でも、floorとceilの違いはよく分かってない)