We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
NOTE: here is my rust code.
`* ---------------------------------------------------------------- *
* IMPORTS
* ---------------------------------------------------------------- */
use std::io;
use std::io::BufRead;
use std::collections::HashMap;
/* ---------------------------------------------------------------- *
* MAIN
* ---------------------------------------------------------------- */
fn main() {
let stdin = io::stdin();
let mut stdin_iterator = stdin.lock().lines();
let t = stdin_iterator
.next()
.unwrap().unwrap()
.trim()
.parse::<i32>()
.unwrap();
let mut numbers = Vec::<i32>::new();
let mut n_max: i32 = 0;
for _ in 0..t {
let n: i32 = stdin_iterator
.next()
.unwrap().unwrap()
.trim()
.parse::<i32>()
.unwrap();
if n > n_max {
n_max = n;
}
numbers.push(n);
}
let primes = get_primes(n_max);
let sums = compute_aggregates(&numbers, n_max, &primes);
for n in numbers.iter() {
if let Some(s) = sums.get(n) {
println!("{:?}", s);
}
}
fn get_primes(t: i32) -> Vec {
let mut map = HashMap::::new();
let mut result = Vec::::new();
for p in 2..=t {
if map.get(&p) != Some(&false) {
result.push(p);
(2*p..=t).step_by(p as usize).for_each(|k| {
map.entry(k).or_insert(false);
});
}
}
return result;
}
fn compute_aggregates(
numbers: &Vec,
n_max: i32,
primes: &Vec,
) -> HashMap:: {
let mut primes_ = primes.clone();
primes_.push(n_max + 1);
let mut sum: i32 = 0;
let mut sums = HashMap::::new();
let mut numbers_sorted = numbers.clone();
numbers_sorted.sort();
for n in numbers_sorted {
let mut k_final: usize = 0;
for (index, &p) in primes_.iter().enumerate() {
k_final = index;
if p > n {
break;
}
sum += p;
}
primes_ = primes_[k_final..].to_vec();
sums.entry(n).or_insert(sum);
}
return sums;
}
2 Min.
Cookie support is required to access HackerRank
Seems like cookies are disabled on this browser, please enable them to open this website
Project Euler #10: Summation of primes
You are viewing a single comment's thread. Return to all comments →
NOTE: here is my rust code. `* ---------------------------------------------------------------- * * IMPORTS * ---------------------------------------------------------------- */
use std::io; use std::io::BufRead; use std::collections::HashMap;
/* ---------------------------------------------------------------- * * MAIN * ---------------------------------------------------------------- */
fn main() { let stdin = io::stdin(); let mut stdin_iterator = stdin.lock().lines();
}
/* ---------------------------------------------------------------- * * HELPER METHODS * ---------------------------------------------------------------- */
fn get_primes(t: i32) -> Vec { let mut map = HashMap::::new(); let mut result = Vec::::new(); for p in 2..=t { if map.get(&p) != Some(&false) { result.push(p); (2*p..=t).step_by(p as usize).for_each(|k| { map.entry(k).or_insert(false); }); } } return result; }
fn compute_aggregates( numbers: &Vec, n_max: i32, primes: &Vec, ) -> HashMap:: { let mut primes_ = primes.clone(); primes_.push(n_max + 1); let mut sum: i32 = 0; let mut sums = HashMap::::new(); let mut numbers_sorted = numbers.clone(); numbers_sorted.sort();
} 2 Min.