Java >> Tutoriel Java >  >> Java

Nombre premier jumeau en Java

Auparavant, nous avons développé le programme de nombres premiers en Java pour vérifier que le nombre donné est un nombre premier ou non. Maintenant, sur la base de ce programme, nous allons développer un programme de nombres premiers jumeaux en Java pour vérifier que les deux nombres donnés sont des nombres jumeaux premiers ou non.

Une paire de nombres premiers ayant une différence de 2 est appelée un nombre premier jumeau. Parfois, on l'appelle aussi un jumeau principal ou une paire principale. Exemple de jumeau premier :- (3,5), (5,7), (11,13) etc.

Les nombres pairs sont divisibles par 2, ils ne peuvent donc pas être un nombre premier. Pour cette raison, le jumeau premier ne peut pas avoir de nombre pair. Dans le nombre donné, si un nombre est pair, il ne peut pas s'agir d'un jumeau premier. Puisque 2 est le seul nombre premier pair et que (2,4) n'est pas un nombre premier jumeau.

D'après le programme des nombres premiers en Java, nous savons que chaque nombre premier peut être représenté par 6n-1 ou 6n+1 . Le nombre premier jumeau a une différence de 2. Donc, chaque nombre premier jumeau sauf (3,5) sous la forme de (6n-1, 6n+1) pour un nombre naturel; c'est-à-dire que le nombre entre le nombre premier jumeau est un multiple de 6 (6n).

Programme Java pour vérifier le nombre premier jumeau

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();
  }
}

La sortie pour différents cas de test :-

Entrez deux nombres ::2 3
2 et 3 ne sont pas jumeaux premiers

Entrez deux nombres ::3 5
3 et 5 sont des nombres premiers jumeaux.

Entrez deux nombres ::5 7
5 et 7 sont jumeaux premiers

La logique de la méthode isTwinPrime() peut également être écrite sur une ligne sous la forme

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

Balise Java