如何在 Java 中检查一个数是否为普洛尼克数?


普洛尼克数可以定义为两个连续整数的乘积。

在数学上,普洛尼克数的形式为 n(n+1)。

它也被称为异面数、长方形数或矩形数。

举几个例子

示例 1

输入数字为 12

让我们使用普洛尼克数的逻辑来检查它 -

4 * 3 = 12, where 3 and 4 are two consecutive numbers.

因此,12 是一个普洛尼克数。

示例 2

输入数字为 30

让我们使用普洛尼克数的逻辑来检查它 -

5 * 6 = 30, where 5 and 6 are two consecutive numbers.

因此,30 是一个普洛尼克数。

示例 3

输入数字为 81

让我们使用普洛尼克数的逻辑来检查它 -

9 * 9 = 81, where 9 and 9 are not two consecutive numbers.

因此,81 不是一个普洛尼克数。

其他一些普洛尼克数的例子包括 0、2、42、56、90、110、380、420、462 等。

注意

根据维基百科

  • 唯一的素数普洛尼克数是 2。

  • 所有普洛尼克数都是偶数。

语法

要获取指定数字的平方根,我们可以使用内置的 sqrt() 方法,

该方法存在于 java.lang 包的 Math 类中。

以下是获取数字平方根的语法。

(我们已强制转换为 long 类型)

long squareRoot = (long)Math.sqrt(inputNumber);

算法

我们这里可以遵循 2 种算法。

算法 1

  • 步骤 1 - 通过初始化或用户输入获取一个整数。

  • 步骤 2 - 找到输入数字的平方根并将其舍入到较低的整数。假设它是 n。

  • 步骤 3 - 找到 n+1。

  • 步骤 4 - 然后找到 n(n+1)

  • 步骤 5 - 如果 n(n+1) 等于原始输入数字,则它是一个普洛尼克数,否则它不是一个普洛尼克数。

算法 2

  • 步骤 1 - 通过初始化或用户输入获取一个整数。

  • 步骤 2 - 使用 for 循环并从 0 迭代到原始数字的平方根。

  • 步骤 3 - 并在 for 循环内部持续检查 n*(n+1)

  • 步骤 4 - 如果 n(n+1) 等于原始输入数字,则它是一个普洛尼克数,否则它不是一个普洛尼克数。

多种方法

我们提供了两种不同的方法来解决这个问题。

  • 使用静态输入值且不使用循环 (算法 1)

  • 使用用户定义的方法并使用循环 (算法 2)

让我们逐一查看程序及其输出。

方法 1:使用静态输入值且不使用循环

在这种方法中,找到平方根(假设为 n),然后找到 n(n+1),并检查它是否与原始数字相同。

这里我们使用了算法 1

示例

public class Main{ //main method public static void main(String[] args){ //initialized a number long inputNumber = 12; System.out.println("Given number: "); //Find square root of the input number //and assign it to a long variable say n long n = (long)Math.sqrt(inputNumber); //Check if the input number is eqaul to n(n+1) if(inputNumber==n*(n+1)){ //print it is a pronic number System.out.println(inputNumber+" is a pronic number"); } else { //else print it is not a pronic number System.out.println(inputNumber+" is not a pronic number"); } } }

输出

Given number:
12 is a pronic number

方法 2:使用用户定义的方法并使用循环

在这种方法中,将要求用户输入一个整数,然后我们将通过将此输入数字作为参数来调用用户定义的方法。

在方法内部,我们将使用算法检查该数字是否为普洛尼克数。

这里我们使用了算法 2

示例

import java.util.*; public class Main{ //main method public static void main(String[] args){ //initialized a number int inputNumber = 110; System.out.println("Given number: "+inputNumber); //calling the user defined method boolean result = checkPronic(inputNumber); if(result) //print it is a pronic number System.out.println(inputNumber+" is a pronic number"); else //else print it is not a pronic number System.out.println(inputNumber+" is not a pronic number"); } public static boolean checkPronic(int inputNumber){ //Find square root of the input number //and assign it to a long variable say n long n = (long)Math.sqrt(inputNumber); //iterate from i=0 to square root of number i.e n for(int i=0;i<=n;i++){ //if i(i+1) equals with inputNumber if(inputNumber==i*(i+1)) //return true return true; } //else return false return false; } }

输出

Given number: 110
110 is a pronic number

在本文中,我们探讨了如何在 Java 中使用不同的方法检查一个数字是否为普洛尼克数。

更新于:2022 年 10 月 27 日

6K+ 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告