dewabe

Prime numbers / Rust exercise (updated)

Apr 23rd, 2022 (edited)
1,289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.30 KB | None | 0 0
  1. // Rust exercise
  2. // Find prime numbers
  3.  
  4. fn is_prime(number: u64) -> bool {
  5.     // Returns true if given number is a prime
  6.     if number == 2 || number == 3 {
  7.         return true
  8.     }
  9.     if number <= 1 || number % 2 == 0 || number % 3 == 0 {
  10.         return false
  11.     }
  12.     let max_number = (number as f64).sqrt() as u64 + 1;
  13.  
  14.     for i in (5..max_number).step_by(2) {
  15.         if number % i == 0 {
  16.             return false
  17.         }
  18.     }
  19.     return true
  20. }
  21.  
  22. fn check_primes(to_number: u64) -> Vec<u64> {
  23.     // Checks is there any primes between 0 and given value (to_number)
  24.     // and pushes all prime numbers to vector as a result
  25.     let mut multiplier = 1;
  26.     let mut potential_prime = 6*multiplier;
  27.     let mut primes = Vec::new();
  28.    
  29.     if to_number >= 2 {
  30.         primes.push(2);
  31.     }
  32.     if to_number >= 3 {
  33.         primes.push(3);
  34.     }
  35.    
  36.     while potential_prime<to_number {
  37.         if is_prime(potential_prime-1) {
  38.             primes.push(potential_prime-1);
  39.         }
  40.         if is_prime(potential_prime+1) {
  41.             primes.push(potential_prime+1);
  42.         }
  43.         multiplier += 1;
  44.         potential_prime = 6*multiplier;
  45.     }
  46.     return primes;
  47. }
  48.  
  49. fn main() {
  50.     let primes = check_primes(1000000);
  51.     println!("{:?}", primes[primes.len()-1]) ;
  52. }
  53.  
Add Comment
Please, Sign In to add comment