diff --git a/core-java/src/main/java/com/baeldung/primechecker/BigIntegerPrimeChecker.java b/core-java/src/main/java/com/baeldung/primechecker/BigIntegerPrimeChecker.java new file mode 100644 index 0000000000..1ac4fed63f --- /dev/null +++ b/core-java/src/main/java/com/baeldung/primechecker/BigIntegerPrimeChecker.java @@ -0,0 +1,13 @@ +package com.baeldung.primechecker; + +import java.math.BigInteger; + +public class BigIntegerPrimeChecker implements PrimeChecker{ + + @Override + public boolean isPrime(int number) { + BigInteger bigInt = BigInteger.valueOf(number); + return bigInt.isProbablePrime(100); + } + +} diff --git a/core-java/src/main/java/com/baeldung/primechecker/BruteForcePrimeChecker.java b/core-java/src/main/java/com/baeldung/primechecker/BruteForcePrimeChecker.java new file mode 100644 index 0000000000..7a94479b8f --- /dev/null +++ b/core-java/src/main/java/com/baeldung/primechecker/BruteForcePrimeChecker.java @@ -0,0 +1,13 @@ +package com.baeldung.primechecker; + +import java.util.stream.IntStream; + +public class BruteForcePrimeChecker implements PrimeChecker{ + + @Override + public boolean isPrime(int number) { + return IntStream.range(2, number).filter(n -> (number % n == 0)).count() == 0; + } + + +} diff --git a/core-java/src/main/java/com/baeldung/primechecker/OptimisedPrimeChecker.java b/core-java/src/main/java/com/baeldung/primechecker/OptimisedPrimeChecker.java new file mode 100644 index 0000000000..40669f4181 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/primechecker/OptimisedPrimeChecker.java @@ -0,0 +1,15 @@ +package com.baeldung.primechecker; + +import java.util.stream.IntStream; + +public class OptimisedPrimeChecker implements PrimeChecker{ + + @Override + public boolean isPrime(int number) { + return IntStream.range(2, (int)Math.sqrt(number) + 1) + .filter(n -> (number % n == 0)) + .count() == 0; + } + + +} diff --git a/core-java/src/main/java/com/baeldung/primechecker/PrimeChecker.java b/core-java/src/main/java/com/baeldung/primechecker/PrimeChecker.java new file mode 100644 index 0000000000..22260268bc --- /dev/null +++ b/core-java/src/main/java/com/baeldung/primechecker/PrimeChecker.java @@ -0,0 +1,6 @@ +package com.baeldung.primechecker; + +public interface PrimeChecker { + + public boolean isPrime( int number ); +} diff --git a/core-java/src/main/java/com/baeldung/primechecker/PrimesPrimeChecker.java b/core-java/src/main/java/com/baeldung/primechecker/PrimesPrimeChecker.java new file mode 100644 index 0000000000..0c6a636612 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/primechecker/PrimesPrimeChecker.java @@ -0,0 +1,12 @@ +package com.baeldung.primechecker; + +import org.apache.commons.math3.primes.Primes; + +public class PrimesPrimeChecker implements PrimeChecker{ + + @Override + public boolean isPrime(int number) { + return Primes.isPrime(number); + } + +} diff --git a/core-java/src/test/java/com/baeldung/primechecker/BigIntegerPrimeCheckerTest.java b/core-java/src/test/java/com/baeldung/primechecker/BigIntegerPrimeCheckerTest.java new file mode 100644 index 0000000000..6a5228cc50 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/primechecker/BigIntegerPrimeCheckerTest.java @@ -0,0 +1,23 @@ +package com.baeldung.primechecker; + +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +public class BigIntegerPrimeCheckerTest { + + PrimeChecker primeChecker = new BigIntegerPrimeChecker(); + + @Test + public void givenPrimeNumber_whenCheckIsPrime_thenTrue(){ + assertTrue(primeChecker.isPrime(13)); + assertTrue(primeChecker.isPrime(1009)); + } + + @Test + public void givenNonPrimeNumber_whenCheckIsPrime_thenFalse(){ + assertTrue(!primeChecker.isPrime(50)); + assertTrue(!primeChecker.isPrime(1001)); + } + +} diff --git a/core-java/src/test/java/com/baeldung/primechecker/BruteForcePrimeCheckerTest.java b/core-java/src/test/java/com/baeldung/primechecker/BruteForcePrimeCheckerTest.java new file mode 100644 index 0000000000..7139373f5e --- /dev/null +++ b/core-java/src/test/java/com/baeldung/primechecker/BruteForcePrimeCheckerTest.java @@ -0,0 +1,24 @@ +package com.baeldung.primechecker; + +import org.junit.Test; +import static org.junit.Assert.*; + +public class BruteForcePrimeCheckerTest { + + BruteForcePrimeChecker primeChecker = new BruteForcePrimeChecker(); + + @Test + public void givenPrimeNumber_whenCheckIsPrime_thenTrue(){ + assertTrue(primeChecker.isPrime(13)); + assertTrue(primeChecker.isPrime(1009)); + } + + @Test + public void givenNonPrimeNumber_whenCheckIsPrime_thenFalse(){ + assertTrue(!primeChecker.isPrime(50)); + assertTrue(!primeChecker.isPrime(1001)); + } + + + +} diff --git a/core-java/src/test/java/com/baeldung/primechecker/OptimisedPrimeCheckerTest.java b/core-java/src/test/java/com/baeldung/primechecker/OptimisedPrimeCheckerTest.java new file mode 100644 index 0000000000..bb4c06a53a --- /dev/null +++ b/core-java/src/test/java/com/baeldung/primechecker/OptimisedPrimeCheckerTest.java @@ -0,0 +1,23 @@ +package com.baeldung.primechecker; + +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +public class OptimisedPrimeCheckerTest { + + PrimeChecker primeChecker = new OptimisedPrimeChecker(); + + @Test + public void givenPrimeNumber_whenCheckIsPrime_thenTrue(){ + assertTrue(primeChecker.isPrime(13)); + assertTrue(primeChecker.isPrime(1009)); + } + + @Test + public void givenNonPrimeNumber_whenCheckIsPrime_thenFalse(){ + assertTrue(!primeChecker.isPrime(50)); + assertTrue(!primeChecker.isPrime(1001)); + } + +} diff --git a/core-java/src/test/java/com/baeldung/primechecker/PrimesPrimeCheckerTest.java b/core-java/src/test/java/com/baeldung/primechecker/PrimesPrimeCheckerTest.java new file mode 100644 index 0000000000..f8b194e855 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/primechecker/PrimesPrimeCheckerTest.java @@ -0,0 +1,22 @@ +package com.baeldung.primechecker; + +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +public class PrimesPrimeCheckerTest { + PrimeChecker primeChecker = new PrimesPrimeChecker(); + + @Test + public void givenPrimeNumber_whenCheckIsPrime_thenTrue() { + assertTrue(primeChecker.isPrime(13)); + assertTrue(primeChecker.isPrime(1009)); + } + + @Test + public void givenNonPrimeNumber_whenCheckIsPrime_thenFalse() { + assertTrue(!primeChecker.isPrime(50)); + assertTrue(!primeChecker.isPrime(1001)); + } + +}