技術メモ

神奈川在住のITエンジニアの備忘録。おもにプログラミングやネットワーク技術について、学んだことを自分の中で整理するためにゆるゆると書いています。ちゃんと検証できていない部分もあるのでご参考程度となりますが、誰かのお役に立てれば幸いです。

Javaで平方数かどうかを判定する。

Javaで平方数かどうかを判定するメソッドを作成した。

    // 平方数かどうかを調べる。
    boolean isSquareNumber (int number) {
        if (number < 0) {
            throw new IllegalArgumentException("Argument must be 0 and over.");
        }
        double sqrtOfNumber = Math.sqrt(number);
        return (isInteger(sqrtOfNumber));
    }

    // 整数かどうかを調べる。
    boolean isInteger (double number) {
        return (number == Math.floor(number));
    }

上記メソッドでは、判定したい数値を引数で受け取って、それに対してルートを取った数値が整数になるかどうかで判定している。


ちなみに、ネット上で、以下のように、判定したい数値のルートを取った後に2乗して、もとの数値と等しくなるかどうかで判定しているものを見かけたが、これだと誤判定することがあるので要注意。

    static boolean isSquareNumber (int number) {
        if (number < 0) {
            throw new IllegalArgumentException("Argument must be 0 and over.");
        }
        double sqrtOfNumber = Math.sqrt(number);
        return (number == Math.pow(sqrtOfNumber, 2));
    }

例えば、98 や 99 を引数として入れた時、これらは平方数ではないのに、上記のメソッドは true を返す。