diff --git a/.gitignore b/.gitignore index 1b51c85..c7fa7c0 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ *.iml *.class out +target diff --git a/primes/README.md b/primes/README.md index 6d0a7f9..b5e1d72 100644 --- a/primes/README.md +++ b/primes/README.md @@ -5,4 +5,5 @@ Printing time is not included. | Language | Time | | ---------| -------| -| Java | 1836ms | \ No newline at end of file +| Java | 1836ms | +| Javascript | 1778.2ms | \ No newline at end of file diff --git a/primes/javascript/primes.js b/primes/javascript/primes.js new file mode 100644 index 0000000..ad62f5e --- /dev/null +++ b/primes/javascript/primes.js @@ -0,0 +1,41 @@ + +const times = []; + +for (let i = 0; i < 10; i++) { + console.log(`staring ${i} run`) + const startTime = Date.now(); + primes(10_000_000) + const totalTime = Date.now() - startTime; + times.push(totalTime); +} + +const average = times.reduce((a, b) => a + b, 0) / times.length; +console.log(`Average time was ${average}ms`) + + + +function primes(max) { + const primesList = []; + + primesList.push(2); + + for (let i = 3; i < max; i++) { //go through all numbers + let isPrime = true; + for (let j = 0; j < primesList.length; j++) { //test each number + let prime = primesList[j]; + if (prime > Math.sqrt(i)) { + break; + } + if (i % prime === 0) { //i = test number, j = some known prime + isPrime = false; + break; + } + } + + if (isPrime) { + primesList.push(i); + } + } + + return primesList; +} \ No newline at end of file diff --git a/primes/rust/Cargo.lock b/primes/rust/Cargo.lock new file mode 100644 index 0000000..33bf790 --- /dev/null +++ b/primes/rust/Cargo.lock @@ -0,0 +1,5 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "rust-primes" +version = "0.1.0" diff --git a/primes/rust/Cargo.toml b/primes/rust/Cargo.toml new file mode 100644 index 0000000..c4b8881 --- /dev/null +++ b/primes/rust/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "rust-primes" +version = "0.1.0" +authors = ["Nilstrieb "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] \ No newline at end of file diff --git a/primes/rust/src/main.rs b/primes/rust/src/main.rs new file mode 100644 index 0000000..6b7ac50 --- /dev/null +++ b/primes/rust/src/main.rs @@ -0,0 +1,43 @@ +use std::time::{SystemTime}; + +fn main() { + let mut times = Vec::new(); + + for i in 0..10 { + println!("Starting run {}", i); + let start = SystemTime::now(); + let _ = primes(10_000_000); + let time = start.elapsed().unwrap().as_millis(); + times.push(time); + } + + let average = times.iter().sum::() / times.len() as u128; + println!("Took {}ms on average", average); +} + + +fn primes(max: usize) -> Vec { + let mut primes_list = Vec::new(); + + primes_list.push(2); + + + for i in 3..max { //go through all numbers + let mut is_prime = true; + for prime in &primes_list { //test each number + if *prime > (i as f64).sqrt() as usize { + break; + } + if i % prime == 0 { //i = test number, j = some known prime + is_prime = false; + break; + } + } + + if is_prime { + primes_list.push(i); + } + } + + return primes_list; +} \ No newline at end of file