Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extern crate num_iter;
- use num_iter::range_step;
- pub fn sieve(n: u64) -> Vec<u64> {
- let mut prime_identifers: Vec<bool> = vec![true; n as usize + 1];
- let primes: Vec<u64> = vec![];
- for i in 2..(n as f64).sqrt() as usize + 1 {
- if *prime_identifers.get(i).unwrap() {
- for j in range_step(i.pow(2), n as usize + 1, i) {
- prime_identifers[j] = false;
- }
- }
- }
- prime_identifers.iter().skip(2).enumerate().fold(
- primes,
- |mut primes: Vec<u64>, (i, identifier)| {
- if *identifier {
- primes.push(i as u64 + 2);
- }
- primes
- },
- )
- }
Add Comment
Please, Sign In to add comment