From e6836c01c7b6fb0ab058e93f9ef46aa6540a9c6d Mon Sep 17 00:00:00 2001 From: Mohamed Sanaulla Date: Sun, 26 Mar 2017 23:57:36 +0300 Subject: [PATCH] sample for BAEL-747 Check if a number is prime in Java (#1508) --- .../primechecker/BigIntegerPrimeChecker.java | 13 ++++++++++ .../primechecker/BruteForcePrimeChecker.java | 13 ++++++++++ .../primechecker/OptimisedPrimeChecker.java | 15 ++++++++++++ .../baeldung/primechecker/PrimeChecker.java | 6 +++++ .../primechecker/PrimesPrimeChecker.java | 12 ++++++++++ .../BigIntegerPrimeCheckerTest.java | 23 ++++++++++++++++++ .../BruteForcePrimeCheckerTest.java | 24 +++++++++++++++++++ .../OptimisedPrimeCheckerTest.java | 23 ++++++++++++++++++ .../primechecker/PrimesPrimeCheckerTest.java | 22 +++++++++++++++++ 9 files changed, 151 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/primechecker/BigIntegerPrimeChecker.java create mode 100644 core-java/src/main/java/com/baeldung/primechecker/BruteForcePrimeChecker.java create mode 100644 core-java/src/main/java/com/baeldung/primechecker/OptimisedPrimeChecker.java create mode 100644 core-java/src/main/java/com/baeldung/primechecker/PrimeChecker.java create mode 100644 core-java/src/main/java/com/baeldung/primechecker/PrimesPrimeChecker.java create mode 100644 core-java/src/test/java/com/baeldung/primechecker/BigIntegerPrimeCheckerTest.java create mode 100644 core-java/src/test/java/com/baeldung/primechecker/BruteForcePrimeCheckerTest.java create mode 100644 core-java/src/test/java/com/baeldung/primechecker/OptimisedPrimeCheckerTest.java create mode 100644 core-java/src/test/java/com/baeldung/primechecker/PrimesPrimeCheckerTest.java 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)); + } + +}