fork download
  1. pub fn is_prime(n: u64) -> bool {
  2. // Handle edge cases first
  3. if n <= 1 {
  4. return false;
  5. }
  6. // Special case for 2 (the only even prime)
  7. if n == 2 {
  8. return true;
  9. }
  10. // Eliminate even numbers > 2
  11. if n % 2 == 0 {
  12. return false;
  13. }
  14.  
  15. // Check divisors up to sqrt(n)
  16. let sqrt_n = (n as f64).sqrt() as u64 + 1;
  17. for i in (3..sqrt_n).step_by(2) {
  18. if n % i == 0 {
  19. return false;
  20. }
  21. }
  22. true
  23. }
  24.  
  25. fn main() {
  26. let numbers = [2, 15, 23, 49, 1_000_000_007];
  27.  
  28. for &n in &numbers {
  29. println!("{} is {}a prime", n, if is_prime(n) { "" } else { "not " });
  30. }
  31. }
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
2 is a prime
15 is not a prime
23 is a prime
49 is not a prime
1000000007 is a prime