可能重复:
确定输入是否为完美正方形的好算法是什么?
我想要检查数字的最短和最简单的方法是 C# 中的完美正方形
一些完美的正方形:
1, 4, 9, 16, 25, 36, 49, 64, 81, 100, ......
可能重复:
确定输入是否为完美正方形的好算法是什么?
我想要检查数字的最短和最简单的方法是 C# 中的完美正方形
一些完美的正方形:
1, 4, 9, 16, 25, 36, 49, 64, 81, 100, ......
可能会检查数字的平方根是否有小数部分,或者它是否是整数。
在实施方面,我会考虑这样的事情:
double result = Math.Sqrt(numberToCheck);
bool isSquare = result%1 == 0;
isSquare
现在应该true
适用于所有方格和false
所有其他方格。
这是检查平方根是否为整数的变体:
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 */;
public bool IsPerferctSquare(uint number)
{
return (Math.Sqrt(number) % 1 == 0);
}
public bool IsPerfectSquare(int num)
{
int root = (int)Math.Sqrt(num);
return (int) Math.Pow(root,2) == num;
}