可能重复:
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, ......
答案 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;
}