Skip to content

Commit a38e6e2

Browse files
eralmas7pivovarit
authored andcommitted
BAEL-1296 Prime numbers till n. (eugenp#2956)
* BAEL-1296 Prime numbers till n. * BAEL-1296 Renamed packge
1 parent 6a8ecab commit a38e6e2

2 files changed

Lines changed: 87 additions & 0 deletions

File tree

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.baeldung.algorithms.prime;
2+
3+
import java.util.Arrays;
4+
import java.util.LinkedList;
5+
import java.util.List;
6+
import java.util.stream.Collectors;
7+
import java.util.stream.IntStream;
8+
9+
public class PrimeGenerator {
10+
public static List<Integer> sieveOfEratosthenes(int n) {
11+
final boolean prime[] = new boolean[n + 1];
12+
Arrays.fill(prime, true);
13+
14+
for (int p = 2; p * p <= n; p++) {
15+
if (prime[p]) {
16+
for (int i = p * 2; i <= n; i += p)
17+
prime[i] = false;
18+
}
19+
}
20+
21+
final List<Integer> primes = new LinkedList<>();
22+
for (int i = 2; i <= n; i++) {
23+
if (prime[i])
24+
primes.add(i);
25+
}
26+
return primes;
27+
}
28+
29+
public static List<Integer> primeNumbersBruteForce(int max) {
30+
final List<Integer> primeNumbers = new LinkedList<Integer>();
31+
for (int i = 2; i <= max; i++) {
32+
if (isPrimeBruteForce(i)) {
33+
primeNumbers.add(i);
34+
}
35+
}
36+
return primeNumbers;
37+
}
38+
39+
private static boolean isPrimeBruteForce(int x) {
40+
for (int i = 2; i < x; i++) {
41+
if (x % i == 0) {
42+
return false;
43+
}
44+
}
45+
return true;
46+
}
47+
48+
public static List<Integer> primeNumbersTill(int max) {
49+
return IntStream.rangeClosed(2, max)
50+
.filter(x -> isPrime(x))
51+
.boxed()
52+
.collect(Collectors.toList());
53+
}
54+
55+
private static boolean isPrime(int x) {
56+
return IntStream.rangeClosed(2, (int) (Math.sqrt(x)))
57+
.allMatch(n -> x % n != 0);
58+
}
59+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.baeldung.algorithms.prime;
2+
3+
import static com.baeldung.algorithms.prime.PrimeGenerator.*;
4+
5+
import java.util.Arrays;
6+
import java.util.List;
7+
import org.junit.Test;
8+
import static org.junit.Assert.*;
9+
10+
public class PrimeGeneratorTest {
11+
@Test
12+
public void whenBruteForced_returnsSuccessfully() {
13+
final List<Integer> primeNumbers = primeNumbersBruteForce(20);
14+
assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers);
15+
}
16+
17+
@Test
18+
public void whenOptimized_returnsSuccessfully() {
19+
final List<Integer> primeNumbers = primeNumbersTill(20);
20+
assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers);
21+
}
22+
23+
@Test
24+
public void whenSieveOfEratosthenes_returnsSuccessfully() {
25+
final List<Integer> primeNumbers = sieveOfEratosthenes(20);
26+
assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers);
27+
}
28+
}

0 commit comments

Comments
 (0)