From efac505a6dab22254f6d0458fa8df29d54ca733f Mon Sep 17 00:00:00 2001 From: Akshay Dubey <38462415+itsAkshayDubey@users.noreply.github.com> Date: Fri, 14 Oct 2022 15:06:26 +0530 Subject: [PATCH] Add twin prime (#3312) --- .../com/thealgorithms/maths/TwinPrime.java | 32 ++++++++++ .../thealgorithms/maths/TwinPrimeTest.java | 60 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 src/main/java/com/thealgorithms/maths/TwinPrime.java create mode 100644 src/test/java/com/thealgorithms/maths/TwinPrimeTest.java diff --git a/src/main/java/com/thealgorithms/maths/TwinPrime.java b/src/main/java/com/thealgorithms/maths/TwinPrime.java new file mode 100644 index 000000000..ba4310ac0 --- /dev/null +++ b/src/main/java/com/thealgorithms/maths/TwinPrime.java @@ -0,0 +1,32 @@ +package com.thealgorithms.maths; +/* + * Java program to find 'twin prime' of a prime number + * Twin Prime: Twin prime of a number n is (n+2) + * if and only if n & (n+2) are prime. + * Wikipedia: https://en.wikipedia.org/wiki/Twin_prime + * + * Author: Akshay Dubey (https://github.com/itsAkshayDubey) + * + * */ + +public class TwinPrime { + + /** + * This method returns twin prime of the integer value passed as argument + * + * @param input_number Integer value of which twin prime is to be found + * @return (number + 2) if number and (number + 2) are prime, -1 otherwise + */ + static int getTwinPrime(int inputNumber) { + + //if inputNumber and (inputNumber + 2) are both prime + //then return (inputNumber + 2) as a result + if(PrimeCheck.isPrime(inputNumber) && PrimeCheck.isPrime(inputNumber + 2) ) { + return inputNumber + 2; + } + //if any one from inputNumber and (inputNumber + 2) or if both of them are not prime + //then return -1 as a result + return -1; + } + +} diff --git a/src/test/java/com/thealgorithms/maths/TwinPrimeTest.java b/src/test/java/com/thealgorithms/maths/TwinPrimeTest.java new file mode 100644 index 000000000..d1f009540 --- /dev/null +++ b/src/test/java/com/thealgorithms/maths/TwinPrimeTest.java @@ -0,0 +1,60 @@ +package com.thealgorithms.maths; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +class TwinPrimeTest { + + @Test + void shouldReturn7() { + //given + int number = 5; + int expectedResult = 7; + + //when + int actualResult = TwinPrime.getTwinPrime(number); + + //then + assertEquals(expectedResult,actualResult); + } + + @Test + void shouldReturn5() { + //given + int number = 3; + int expectedResult = 5; + + //when + int actualResult = TwinPrime.getTwinPrime(number); + + //then + assertEquals(expectedResult,actualResult); + } + + @Test + void shouldReturnNegative1() { + //given + int number = 4; + int expectedResult = -1; + + //when + int actualResult = TwinPrime.getTwinPrime(number); + + //then + assertEquals(expectedResult,actualResult); + } + + @Test + void shouldReturn19() { + //given + int number = 17; + int expectedResult = 19; + + //when + int actualResult = TwinPrime.getTwinPrime(number); + + //then + assertEquals(expectedResult,actualResult); + } +}