web-dev-qa-db-ja.com

完璧なスクエアをチェックする最短の方法は?

可能性のある複製:
入力が完全な正方形であるかどうかを判断するための適切なアルゴリズムは何ですか?

番号を確認する最も簡単で簡単な方法がC#の完全な四角形であることを確認したい

完璧な正方形のいくつか:

1, 4, 9, 16, 25, 36, 49, 64, 81, 100, ......
26
Javed Akram

おそらく、数値の平方根に小数部があるかどうか、または整数かどうかをチェックしています。

実装面では、私はこのようなものを検討します:

double result = Math.Sqrt(numberToCheck);
bool isSquare = result%1 == 0;

isSquareは、すべての正方形の場合はtrueになり、その他の正方形の場合はfalseになります。

38

これは、平方根が整数であるかどうかをチェックする際のバリアントです:

bool IsPerfectSquare(double input)
{
    var sqrt = Math.Sqrt(input);
    return Math.Abs(Math.Ceiling(sqrt) - Math.Floor(sqrt)) < Double.Epsilon;
}

Math.Ceilingは次の整数に切り上げますが、Math.Floorは切り捨てられます。それらが同じである場合、まあ、あなたは整数を持っています!

これはワンライナーとして書くこともできます:

if (int(Math.Ceiling(Math.Sqrt(n))) == int(Math.Floor(Math.Sqrt(n)))) /* do something */;
5
Daren Thomas
    public bool IsPerferctSquare(uint number)
    {
        return (Math.Sqrt(number) % 1 == 0);
    }
2
rajesh
public bool IsPerfectSquare(int num)
{
   int root = (int)Math.Sqrt(num);
   return (int) Math.Pow(root,2) == num;
}
1
Itay Karo