From 2027871010cf1293292da8f6a4c150d8b57065b8 Mon Sep 17 00:00:00 2001 From: Mariano Date: Wed, 31 Jul 2024 21:14:40 +0200 Subject: [PATCH] Wrote program for Day 6 --- .../Day-06_Next-Prime/next_prime/Cargo.toml | 6 +++++ .../Day-06_Next-Prime/next_prime/src/lib.rs | 16 +++++++++++++ .../Day-06_Next-Prime/next_prime/src/main.rs | 23 +++++++++++++++++++ .../next_prime/tests/exaples.rs | 16 +++++++++++++ 4 files changed, 61 insertions(+) create mode 100644 Week-01/Day-06_Next-Prime/next_prime/Cargo.toml create mode 100644 Week-01/Day-06_Next-Prime/next_prime/src/lib.rs create mode 100644 Week-01/Day-06_Next-Prime/next_prime/src/main.rs create mode 100644 Week-01/Day-06_Next-Prime/next_prime/tests/exaples.rs diff --git a/Week-01/Day-06_Next-Prime/next_prime/Cargo.toml b/Week-01/Day-06_Next-Prime/next_prime/Cargo.toml new file mode 100644 index 0000000..a854f01 --- /dev/null +++ b/Week-01/Day-06_Next-Prime/next_prime/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "next_prime" +version = "0.1.0" +edition = "2021" + +[dependencies] diff --git a/Week-01/Day-06_Next-Prime/next_prime/src/lib.rs b/Week-01/Day-06_Next-Prime/next_prime/src/lib.rs new file mode 100644 index 0000000..27fa4a5 --- /dev/null +++ b/Week-01/Day-06_Next-Prime/next_prime/src/lib.rs @@ -0,0 +1,16 @@ +pub fn next_prime(num: usize) -> Option { + let max_next_prime = num * 2; + let mut is_prime: Vec = vec![true; max_next_prime]; + + for i in 2..max_next_prime { + for j in (i * 2..max_next_prime).step_by(i) { + is_prime[j] = false; + } + + if i >= num && is_prime[i] { + return Some(i); + } + } + + None +} diff --git a/Week-01/Day-06_Next-Prime/next_prime/src/main.rs b/Week-01/Day-06_Next-Prime/next_prime/src/main.rs new file mode 100644 index 0000000..9330f5a --- /dev/null +++ b/Week-01/Day-06_Next-Prime/next_prime/src/main.rs @@ -0,0 +1,23 @@ +use next_prime::next_prime; +use std::io::{self, Write}; + +fn main() { + let mut buffer = String::new(); + + print!("Give me an integer, and I will return the first prime found from that: "); + io::stdout().flush().expect("Failed to flush stdout."); + + io::stdin() + .read_line(&mut buffer) + .expect("Error while trying to read the number."); + + let num: usize = buffer + .trim() + .parse() + .expect("The input inserted is not a valid integer"); + + match next_prime(num) { + Some(x) => println!("Here's the first prime found from {}: {}", num, x), + None => println!("None found"), + } +} diff --git a/Week-01/Day-06_Next-Prime/next_prime/tests/exaples.rs b/Week-01/Day-06_Next-Prime/next_prime/tests/exaples.rs new file mode 100644 index 0000000..567b4a5 --- /dev/null +++ b/Week-01/Day-06_Next-Prime/next_prime/tests/exaples.rs @@ -0,0 +1,16 @@ +use next_prime::next_prime; + +#[test] +fn first_example() { + assert_eq!(next_prime(12), Some(13)); +} + +#[test] +fn second_example() { + assert_eq!(next_prime(24), Some(29)); +} + +#[test] +fn third_example() { + assert_eq!(next_prime(11), Some(11)); +}