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