Java Program to Check if a Given Number is Perfect Square

2025年3月17日 | 阅读 7 分钟

在本节中,我们创建了多个Java 程序来检查给定的数字是否是完全平方数。

完全平方数平方数是指一个正整数是另一个整数的平方。换句话说,当我们把两个相同的数字相乘时,得到的乘积就是完全平方数。简而言之,它是两个正整数相等相乘的积,或一个整数与自身相乘的积。

完全平方数的特性是它只以0, 1, 4, 6, 9,25 结尾。完全平方数的例子有

49=7*7
100=10*10
625=25*25

Java 中,我们可以通过以下方式检查一个数字是否为完全平方数。

  • 使用 sqrt() 方法
  • 使用 用户定义逻辑

使用 sqrt() 方法

我们遵循的方法是:

  1. 首先,找出给定数字的平方根
  2. 计算已计算平方根的向下取整值。
  3. 找出向下取整的值与我们在第 1 步中找到的平方根之间的差值
  4. 最后,将(第 3 步得到的值)与 0 进行比较。如果差值为 0,则给定数字是完全平方数,否则不是。

让我们通过一个例子来理解上述步骤。

示例:检查数字 324 是否为完全平方数。

  • 324 的平方根是 18。
  • 平方根的向下取整值是 18。
  • 平方根与向下取整值之差为 0。
  • 差值为 0。因此,给定的数字是完全平方数。

让我们在 Java 程序中实现上述步骤。

为了找到数字的平方根和向下取整值,我们使用了 **Java Math 类**的以下预定义方法。

sqrt(): 它是 Math 类的静态方法。我们可以直接通过类名调用它。它接受一个 double 类型的参数。如果传入负数或 NaN,它会返回 NaN。它返回 double 值的正平方根。

语法

floor(): 它也是 Math 类的静态方法。它计算数字的向下取整值。它接受一个 double 类型的参数。它返回小于或等于参数且等于数学整数的最大(最接近的正整数)浮点数值。

语法

在下面的示例中,我们创建了一个名为 checkPerfectSquare() 的用户定义方法。它接受一个 double 类型的参数。该方法包含检查数字是否为完全平方数的逻辑。

在该方法中,我们使用 **Math.sqrt()** 方法计算数字的平方根,并将其存储在一个名为 sqrt 的变量中。之后,我们使用 **Math.floor()** 方法找到计算出的平方根的向下取整值。同时,我们找到了 sqrt 和 floor 值之间的差值。将差值与 0 进行比较并返回一个 **Boolean** 值。

返回的值传递给调用方法(在 if 语句内)。如果差值为 0,则给定的数字是完全平方数,否则不是完全平方数。

CheckPerfectSquareExample1.java

输出 1

Enter any number: 8100
Yes, the given number is perfect square.

输出 2

Enter any number: 24
No, the given number is not perfect square.

使用用户定义逻辑

在下面的示例中,我们没有使用 Java Math 类的任何预定义方法。我们实现了自己的逻辑来检查完全平方数。

CheckPerfectSquareExample2.java

输出 1

Enter a number: 121
Yes, the given number is perfect square.

输出 2

Enter a number: 121
No, the given number is not perfect square.

在下面的示例中,我们首先使用模运算符计算给定数字的余数。之后,我们使用逻辑 OR 运算符将余数与 2、3、7 和 8 进行比较,因为完全平方数永远不会以这些数字结尾。如果数字的余数为 2、3、7 或 8,则它不可能是完全平方数。

如果数字的余数为 0、1、4、6 和 9,则跳转到 for 循环。对于 i 的每次迭代,我们计算 i*i。如果 i 的平方等于输入的数字 (n),则该数字是完全平方数并返回 true,否则返回 false。

CheckPerfectSquareExample3.java

输出 1

Enter a number: 121
Is the number perfect square? true

输出 2

Enter a number: 167
Is the number perfect square? false

让我们看另一种逻辑。

CheckPerfectSquareExample4.java

输出 1

Enter a number: 121
121 is a perfect square.

输出 2

Enter a number: 143
143 is not a perfect square.

让我们看看另一个检查给定数字是否为完全平方数的逻辑。

在下面的程序中,我们对输入的数字取平方根,并将其强制转换为 int 类型。之后,我们对该值进行平方,看看它是否与给定的数字相同。如果它们等于该数字,我们就得到了一个完全平方数。

CheckPerfectSquareExample5.java

输出 1

Please enter an integer: 98
98 is not a perfect square number.

输出 2

Please enter an integer: 529
529 is a perfect square number.

让我们看另一个具有不同逻辑的示例。

在下面的示例中,我们采用了以下方法:

  1. 假设 n 是我们要检查的数字。
  2. 创建一个从 1 到 n/2 执行的 for 循环。
  3. 在每次迭代中计算 x=i*i。
  4. 变量 x 有以下三种情况:
    • 如果 x=n,则给定的数字是完全平方数。
    • 如果 x>n,则 n 不是完全平方数。
    • 如果上述两种情况都不成立,则继续。

CheckPerfectSquareExample6.java

输出

50 is a perfect square number? false
361 is a perfect square number? true

下一个主题Java io 包