Guest User

Untitled

a guest
Apr 23rd, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.65 KB | None | 0 0
  1. extern crate num_iter;
  2.  
  3. use num_iter::range_step;
  4.  
  5. pub fn sieve(n: u64) -> Vec<u64> {
  6. let mut prime_identifers: Vec<bool> = vec![true; n as usize + 1];
  7. let primes: Vec<u64> = vec![];
  8.  
  9. for i in 2..(n as f64).sqrt() as usize + 1 {
  10. if *prime_identifers.get(i).unwrap() {
  11. for j in range_step(i.pow(2), n as usize + 1, i) {
  12. prime_identifers[j] = false;
  13. }
  14. }
  15. }
  16.  
  17. prime_identifers.iter().skip(2).enumerate().fold(
  18. primes,
  19. |mut primes: Vec<u64>, (i, identifier)| {
  20. if *identifier {
  21. primes.push(i as u64 + 2);
  22. }
  23. primes
  24. },
  25. )
  26. }
Add Comment
Please, Sign In to add comment