Java 如何检查一个数是否是一个Pronic数
Pronic数可以定义为当它是两个连续整数的乘积时的一个数值。
在数学上,Pronic数的形式为n(n+1)。
它也被称为异差数、长方形数或矩形数。
为了向您展示一些示例
示例1
输入的数字是12
让我们使用Pronic数的逻辑来检查它-
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不是一个pronic数。
一些其他的pronic数的示例包括0、2、42、56、90、110、380、420、462等。
注意 −
根据维基百科
- 唯一的素数pronic数是2。
-
所有的pronic数都是偶数。
语法
我们可以使用java.lang包中的Math类中内置的sqrt()方法来获取指定数的平方根。
以下是获取数的平方根的语法。
(我们已将其转换为long)
long squareRoot = (long)Math.sqrt(inputNumber);
步骤
我们可以遵循两个算法。
步骤1
- 步骤1 - 通过初始化或用户输入获得一个整数。
-
步骤2 - 找到输入数字的平方根并将其四舍五入为较低的整数。假设为n。
-
步骤3 - 找到n+1。
-
步骤4 - 然后找到n(n+1)。
-
步骤5 - 如果n(n+1)等于原始输入数字,则它是一个pronic数,否则它不是一个pronic数。
步骤2
-
步骤1 - 通过初始化或用户输入获得一个整数。
-
步骤2 - 使用for循环从0迭代到原始数字的平方根。
-
步骤3 - 在for循环内部不断检查n*(n+1)。
-
步骤4 - 如果n(n+1)等于原始输入数字,则它是一个pronic数,否则它不是一个pronic数。
多种方法
我们提供了两种不同的方法来解决问题。
- 通过使用静态输入值且不使用循环(算法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:使用用户定义方法和循环
在此方法中,用户将被要求输入一个整数值,然后我们将通过将输入的数字作为参数调用用户定义的方法。
在方法内部,我们将使用算法来检查数字是否是一个pronic数。
此处我们使用了第二种算法。
示例
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中的亲序数。