检查完美广场的最短路径?

时间:2011-02-03 12:07:01

标签: c# square-root

  

可能重复:
  What's a good algorithm to determine if an input is a perfect square?

我想要最简单,最简单的方法来检查数字是否是C#中的完美平方

一些完美广场:

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

4 个答案:

答案 0 :(得分:38)

可能检查数字的平方根是否有任何小数部分,或者它是否为整数。

实施方面,我会考虑这样的事情:

double result = Math.Sqrt(numberToCheck);
bool isSquare = result%1 == 0;
对于所有广场,

isSquare现在应为true,对所有其他广场应为false

答案 1 :(得分:5)

这是检查平方根是否为整数的变体:

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

Math.Ceiling将向上舍入到下一个整数,而Math.Floor将向下舍入。如果它们是相同的,那么你有一个整数!

这也可以写成oneliner:

if (int(Math.Ceiling(Math.Sqrt(n))) == int(Math.Floor(Math.Sqrt(n)))) /* do something */;

答案 2 :(得分:2)

    public bool IsPerferctSquare(uint number)
    {
        return (Math.Sqrt(number) % 1 == 0);
    }

答案 3 :(得分:1)

public bool IsPerfectSquare(int num)
{
   int root = (int)Math.Sqrt(num);
   return (int) Math.Pow(root,2) == num;
}