检查完美平方的最短方法?

发布于 2024-10-15 20:19:11 字数 357 浏览 10 评论 0原文

可能的重复:
什么是确定的好算法如果输入是完全平方数?

我想要用最短和最简单的方法来检查 C# 中的数字是否是完全平方数

一些完全平方数:

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

Possible Duplicate:
What's a good algorithm to determine if an input is a perfect square?

I want Shortest and Simplest way to Check a number is perfect square in C#

Some of Perfect Squares:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

陈年往事 2024-10-22 20:19:11

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

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

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

对于所有方块,isSquare 现在应该是 true,对于所有其他方块,应该是 false

Probably checking if the square root of the number has any decimal part, or if it is a whole number.

Implementationwise, I would consider something like this:

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

isSquare should now be true for all squares, and false for all others.

随梦而飞# 2024-10-22 20:19:11

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

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 */;

This is a variant on checking if the square root is integral:

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

Math.Ceiling will round up to the next integer, whereas Math.Floor will round down. If they are the same, well, then you have an integer!

This can also be written as a oneliner:

if (int(Math.Ceiling(Math.Sqrt(n))) == int(Math.Floor(Math.Sqrt(n)))) /* do something */;
花开柳相依 2024-10-22 20:19:11
    public bool IsPerferctSquare(uint number)
    {
        return (Math.Sqrt(number) % 1 == 0);
    }
    public bool IsPerferctSquare(uint number)
    {
        return (Math.Sqrt(number) % 1 == 0);
    }
执手闯天涯 2024-10-22 20:19:11
public bool IsPerfectSquare(int num)
{
   int root = (int)Math.Sqrt(num);
   return (int) Math.Pow(root,2) == num;
}
public bool IsPerfectSquare(int num)
{
   int root = (int)Math.Sqrt(num);
   return (int) Math.Pow(root,2) == num;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文