java primes

This commit is contained in:
nora 2021-06-06 20:07:12 +02:00
commit bd77a7dfff
5 changed files with 76 additions and 0 deletions

5
.gitignore vendored Normal file
View file

@ -0,0 +1,5 @@
*/.idea
.idea
*.iml
*.class
out

8
primes/README.md Normal file
View file

@ -0,0 +1,8 @@
# Primes
Find all primes from 0 to 10 000 000.
Printing time is not included.
| Language | Time |
| ---------| -------|
| Java | 1836ms |

View file

@ -0,0 +1,33 @@
import java.util.ArrayList;
import java.util.List;
public class DefaultPrimes implements Primes {
// (will make the code 15% slower)
@SuppressWarnings("ForLoopReplaceableByForEach")
public List<Integer> primes(int max) {
List<Integer> primesList = new ArrayList<>(10000);
primesList.add(2);
for (int i = 3; i < max; i++) { //go through all numbers
boolean isPrime = true;
for (int j = 0; j < primesList.size(); j++) { //test each number
int prime = primesList.get(j);
if (prime > Math.sqrt(i)) {
break;
}
if (i % prime == 0) { //i = test number, j = some known prime
isPrime = false;
break;
}
}
if (isPrime) {
primesList.add(i);
}
}
return primesList;
}
}

25
primes/java/src/Main.java Normal file
View file

@ -0,0 +1,25 @@
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
Primes primes = new DefaultPrimes();
List<Long> times = new ArrayList<>();
List<Integer> values = null;
for (int i = 0; i < 10; i++) {
System.out.println("iteration " + i + " started");
long startTime = System.currentTimeMillis();
values = primes.primes(10_000_000);
long totalTime = System.currentTimeMillis() - startTime;
times.add(totalTime);
}
double average = times.stream()
.mapToLong(l -> l)
.average()
.getAsDouble();
System.out.println("Average time after 10 times: " + average + "ms");
}
}

View file

@ -0,0 +1,5 @@
import java.util.List;
public interface Primes {
List<Integer> primes(int max);
}