From 5a037d3a78934ff52b65f7806b977df491ca4816 Mon Sep 17 00:00:00 2001 From: Coin de Gamma Date: Sat, 4 Mar 2023 05:51:49 +0000 Subject: [PATCH] 010 ok --- 010/main.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 010/main.rs diff --git a/010/main.rs b/010/main.rs new file mode 100644 index 0000000..08b4e50 --- /dev/null +++ b/010/main.rs @@ -0,0 +1,36 @@ +// based on ../007/main.rs + +const SIZE: usize = 2000000; // 10 as test should be =17 +type Rs = [bool; SIZE + 1]; + +fn remove_divs(m: usize, xs: &mut Rs) { + let mut i = m + m; + while i <= SIZE { + xs[i] = false; + i += m; + } +} + +fn get_next_p(m_from: usize, xs: &Rs) -> Option { + for k in (m_from + 1)..=SIZE { + if xs[k] { return Some(k); } + } + return None; +} + +fn main() { + let mut xs: Rs = [true; SIZE + 1]; + let mut sum = 0usize; + let mut last_p = 1; + loop { + match get_next_p(last_p, &xs) { + Some(p) => { + sum += p; + last_p = p; + }, + None => break + } + remove_divs(last_p, &mut xs); + } + println!("sum: {}", sum); +}