Skip to main content

rl_lang/interpreter/stdlib/math/
is_prime.rs

1use crate::interpreter::evaluator::Evaluator;
2
3pub fn std_is_prime(_: &mut Evaluator, x: i64) -> bool {
4    let x = x as u64;
5    if x < 2 {
6        return false;
7    }
8    if x < 4 {
9        return true;
10    }
11    if x.is_multiple_of(2) || x.is_multiple_of(3) {
12        return false;
13    }
14    let mut i = 5;
15    while i * i <= x {
16        if x.is_multiple_of(i) || x.is_multiple_of(i + 2) {
17            return false;
18        }
19        i += 6;
20    }
21    true
22}