rustleaf 0.1.0

A simple programming language interpreter written in Rust
Documentation
// <p>By listing the first six prime numbers: $2, 3, 5, 7, 11$, and $13$, we can see that the $6$th prime is $13$.</p>
// <p>What is the $10\,001$st prime number?</p>

fn is_prime(n) {
    if n < 2 {
        false
    } else if n == 2 {
        true
    } else if n % 2 == 0 {
        false
    } else {
        var limit = int(float(n) ** 0.5) + 1;
        for i in range(3, limit, 2) {
            if n % i == 0 {
                return false;
            }
        }
        true
    }
}

fn solve_euler_007(target_index) {
    if target_index == 1 {
        return 2;
    }
    
    var count = 1; // Start with 2 as the first prime
    var candidate = 3; // Start checking odd numbers from 3
    
    while count < target_index {
        if is_prime(candidate) {
            count += 1;
        }
        candidate += 2; // Only check odd numbers
    }
    
    candidate - 2 // Back up to the last prime we found
}

// Test with the example (6th prime should be 13)
var test_result = solve_euler_007(6);
assert(test_result == 13);

// Test a few more cases
assert(solve_euler_007(1) == 2);
assert(solve_euler_007(2) == 3);
assert(solve_euler_007(3) == 5);
assert(solve_euler_007(4) == 7);
assert(solve_euler_007(5) == 11);

// Solve the actual problem (10,001st prime)
var result = solve_euler_007(10001);
print("The 10,001st prime number is: ${result}");
assert(result == 104743);