From 12ec3b5d1b4c12ed923abc9ad80e0522be828491 Mon Sep 17 00:00:00 2001 From: CORR1T Date: Mon, 7 Jun 2021 15:38:06 +0200 Subject: [PATCH] checks every second number --- primes/java/src/DefaultPrimes.java | 7 ++++--- primes/rust/src/main.rs | 8 +++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/primes/java/src/DefaultPrimes.java b/primes/java/src/DefaultPrimes.java index 9cb3cac..cf2021a 100644 --- a/primes/java/src/DefaultPrimes.java +++ b/primes/java/src/DefaultPrimes.java @@ -6,15 +6,16 @@ public class DefaultPrimes implements Primes { // (will make the code 15% slower) @SuppressWarnings("ForLoopReplaceableByForEach") public List primes(int max) { - List primesList = new ArrayList<>(10000); + List primesList = new ArrayList<>(max); primesList.add(2); - for (int i = 3; i < max; i++) { //go through all numbers + for (int i = 3; i < max; i += 2) { //go through all numbers boolean isPrime = true; + double sqrRoot = Math.sqrt(i); for (int j = 0; j < primesList.size(); j++) { //test each number int prime = primesList.get(j); - if (prime > Math.sqrt(i)) { + if (prime >= sqrRoot) { break; } if (i % prime == 0) { //i = test number, j = some known prime diff --git a/primes/rust/src/main.rs b/primes/rust/src/main.rs index ee8b917..e376726 100644 --- a/primes/rust/src/main.rs +++ b/primes/rust/src/main.rs @@ -24,9 +24,10 @@ fn primes(max: u32) -> Vec { primes_list.push(2); - for i in 3..max { //go through all numbers + for mut i in 3..max { + let sqr_root: u32 = (i as f64).sqrt() as u32; for prime in &primes_list { //test each number - if *prime > (i as f64).sqrt() as u32 { + if *prime > sqr_root { primes_list.push(i); break; } @@ -34,7 +35,8 @@ fn primes(max: u32) -> Vec { break; } } + i += 1; } - return primes_list; + primes_list } \ No newline at end of file