如何在 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 中使用不同的方法检查一个数字是否为普洛尼克数。