如何在 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+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.