Java >> Java tutorial >  >> Java

Twin Prime Number i Java

Tidligere udviklede vi primtalsprogrammet i java for at kontrollere, at det givne tal er et primtal eller ej. Nu, baseret på det program, vil vi udvikle et tvillingprimtalsprogram i Java for at kontrollere, at de givne to tal er primtal eller ej.

Et par primtal med en forskel på 2 kaldes et tvillingeprimtal. Nogle gange kaldes det også en prime tvilling eller prime par. Eksempler på prime tvillinger er:- (3,5), (5,7), (11,13) e.t.c.

De lige tal er delelige med 2, så de kan ikke være et primtal. På grund af denne grund kan den primære tvilling ikke have et lige tal. Hvis et tal er lige tal i det givne tal, kan det ikke være en primtvilling. Da 2 er det eneste primtal, der er lige, og (2,4) ikke er et tvillingprimtal.

Fra primtalsprogrammet i java ved vi, at hvert primtal kan repræsenteres som 6n-1 eller 6n+1 . Tvillingprimtallet har en forskel på 2. Så alle tvillingeprimtal undtagen(3,5) i form af (6n-1, 6n+1) for et naturligt tal; dvs. tallet mellem tvillingeprimtal er et multiplum af 6 (6n).

Java-program til at kontrollere tvillingeprimtal

import java.util.Scanner;

public class TwinPrimeNumber {

  public static boolean isPrime(int number) {

     // negative numbers, 0 and 1 are 
     // not a prime number
     if( number <= 1 ) return false;

     // 2 and 3 are prime numbers
     if( number <= 3 ) return true;

     // numbers divisible by 2 and 3
     // are not prime number
     if(number%2==0 || number%3==0)
        return false;

     // logic for remaining numbers
     for(int i=5; i<=Math.sqrt(number); i=i+6){
        if(number%i == 0 || number%(i+2) == 0) 
            return false;
     }

     return true;
  }

  public static boolean isTwinPrime(int a, int b){

     // if difference is not 2 then
     // it is not twin prime
     if(Math.abs(b-a) != 2) return false;

     // check both are prime number or not
     if(isPrime(a) && isPrime(b)) return true;
     // else return false  
     return false;
   }

   public static void main(String[] args) {

     // declare variables
     int n1 = 0, n2 = 0;

     // create Scanner class object to read input
     Scanner scan = new Scanner(System.in);

     // read number
     System.out.print("Enter two numbers:: ");
     n1 = scan.nextInt();
     n2 = scan.nextInt();

     // check twin prime and display result
     if(isTwinPrime(n1, n2))
        System.out.println(n1+" and "+ n2 + 
                 " are twin prime");
     else 
        System.out.println(n1+" and "+ n2 + 
                 " are not twin prime");

     // close Scanner class object
     scan.close();
  }
}

Output for forskellige test-cases:-

Indtast to tal::2 3
2 og 3 er ikke dobbelte primtal

Indtast to tal::3 5
3 og 5 er dobbelte primtal.

Indtast to tal::5 7
5 og 7 er dobbelte primtal

Logikken for metoden isTwinPrime() kan også skrives på én linje som

public static boolean isTwinPrime(int a, int b){
   return ( (Math.abs(b-a) == 2) &&
          isPrime(a) && isPrime(b) );
}

Java tag