最简单的方法来检查完美的广场?
可能重复:
什么是一个很好的算法来确定输入是否是一个完美的正方形?
我想要最简单最简单的方法来检查一个数字是完美的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);
}
链接地址: http://www.djcxy.com/p/86607.html