Java 如何检查一个数字是否是指针素数

Java 如何检查一个数字是否是指针素数

如果数字的各位数字的乘积值与原始素数的和等于下一个素数,则称该数字为指针素数。

为了更清楚,我们取一个素数,并将数字相互相乘,将乘法值与原始数字相加。然后,如果我们得到另一个与原始素数相邻的素数,那么我们可以说该数字是指针素数。

一些指针素数的示例是:23、61、1123、1231 …等。

在本文中,我们将看到如何使用Java编程语言来检查一个数字是否是指针素数。

展示一些实例

实例-1

输入数字为23。

我们通过使用指针素数的逻辑来检查它。

23的各位数字的乘积=2 * 3=6。

将此值与原始数字相加=23 + 6=29。

与我们的原始数字相邻的实际素数是29。

正如我们注意到的,计算出的数字和下一个素数是相同的。

因此,23是一个指针素数。

实例-2

输入数字为1123。

我们通过使用指针素数的逻辑来检查它。

1123的各位数字的乘积=1 * 1 * 2 * 3=6。

将此值与原始数字相加=1123 + 6=1129。

与我们的原始数字相邻的实际素数是1129。

正如我们注意到的,计算出的数字和下一个素数是相同的。

因此,1123是一个指针素数。

实例-3

输入数字为147。

我们通过使用指针素数的逻辑来检查它。

147的各位数字的乘积=1 * 4 * 7=28。

将此值与原始数字相加=147 + 28=175。

正如我们注意到的,计算出的数字不是素数。

因此,147不是一个指针素数。

步骤

步骤1 - 获取输入数字(通过初始化或用户输入)。

步骤2 - 检查输入数字是否为素数。

步骤3 - 确定实际上是原始数字相邻的素数。

步骤4 - 使用计算指针素数的算法。

步骤5 - 如果计算出的值和实际的下一个素数相同,则称输入数字为指针素数,否则不是。

多种方法

我们以不同的方式提供了解决方案。

  • 通过使用具有用户定义方法的静态输入值。

  • 通过使用具有用户定义方法的用户输入值。

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

方法1:通过使用具有用户定义方法的静态输入值

在这种方法中,我们声明一个具有静态输入的变量,然后通过使用算法来检查这个数字是否是指针素数。

示例

public class Main {
   public static void main(String[] args) {

   // Declare a variable and store the value by static input method
   int inputNumber = 23;

   // call the function to check the pointer prime number
   if (checkPointerPrime(inputNumber))
      System.out.print(inputNumber + " is a pointer prime number.");
   else
      System.out.print(inputNumber + " is not a pointer prime number.");
   }

   //user-defined method to calculate product value of digits
   static int digitProduct(int num) {
      int prod = 1;

      //initiate loop to calculate product value
      while (num != 0) {
         prod = prod * (num % 10);

         //remove the last digit
         num = num / 10;
      }
      return prod;
   }

   // user-defined method to check the prime number
   public static boolean checkPrim(int num) {
      if (num <= 1)
         return false;

      //initiate the loop
      for (int i = 2; i < num; i++)

         //if condition to check whether the number is divisible by any number or not
         if (num % i == 0)

            //if true then return false
            return false;

         //otherwise return true
         return true;

   }

   // user-defined function to check the number is pointer prime number or not
   static int nextPrimeNum(int num) {

      //starting phase
      if (num <= 1)
         return 2;

      int nextPrime = num;
      boolean flag = false;

      // loop to check continuously for prime number
      while (!flag) {
         nextPrime++;

         if (checkPrim(nextPrime))
            flag = true;
      }
      return nextPrime;
   }

   // user-defined method to check Pointer-Prime numbers
   static boolean checkPointerPrime(int num) {

      //condition for pointer prime number
      if (checkPrim(num) &&
         (num + digitProduct(num) == nextPrimeNum(num)))
         return true;
      else
         return false;
   }
}

输出

23 is a pointer prime number

方法2:使用用户输入值和用户定义方法

在这种方法中,我们要求用户输入一个数作为输入数,并将该数作为参数传递给用户定义的方法,然后在方法内部通过使用算法来检查该数是否是一个指针素数。

示例

import java.util.Scanner;
public class Main {
   public static void main(String[] args) {

      //create object of Scanner class
      Scanner sc=new Scanner(System.in);

      //ask user to give the input
      System.out.print("Enter a number: ");

      //declare a variable and store the input value
      int inputNumber=sc.nextInt();

      // call the function to check the pointer prime number
      if (checkPointerPrime(inputNumber))
         System.out.print(inputNumber + " is a pointer prime number.");
      else
         System.out.print(inputNumber + " is not a pointer prime number.");
   }

   //user-defined method to calculate product value of digits
   static int digitProduct(int num) {
      int prod = 1;

      //initiate loop to calculate product value
      while (num != 0) {
         prod = prod * (num % 10);

         //remove the last digit
         num = num / 10;
      }
      return prod;
   }

   // user-defined method to check the prime number
   public static boolean checkPrim(int num) {
      if (num <= 1)
         return false;


      //initiate the loop
      for (int i = 2; i < num; i++)

         //if condition to check whether the number is divisible by any number or not
         if (num % i == 0)

            //if true then return false
            return false;

         //otherwise return true
         return true;

   }

   // user-defined function to check the number is pointer prime number or not
   static int nextPrimeNum(int num) {

      //starting phase
      if (num <= 1)
         return 2;

      int nextPrime = num;
      boolean flag = false;

      // loop to check continuously for prime number
      while (!flag) {
         nextPrime++;

         if (checkPrim(nextPrime))
            flag = true;
      }
      return nextPrime;
   }

   // user-defined method to check Pointer-Prime numbers
   static boolean checkPointerPrime(int num) {

      //condition for pointer prime number
      if (checkPrim(num) && 
      (num + digitProduct(num) == nextPrimeNum(num)))
         return true;
      else
         return false;
   }
}

输出

Enter a number: 1123
1123 is a pointer prime number

在本文中,我们探讨了如何使用不同的方法来检查一个数字是否是Java中的指针素数。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程