large-primes 0.5.1

Package for Large Prime Number Analysis
Documentation
mod parser;

use clap::Parser;
use std::time::Instant;
use parser::Args;
use large_primes::get_max_primes;
use large_primes::{ standard, fermat, miller_rabin, lucas_lehmer_test };
use large_primes::pow;

fn main() {
    let args = Args::parse();

    let now = Instant::now();

    match args.get_action() {
        parser::Action::Power => {
            let target = args.get_target();
            let power = args.get_power();
            println!("Prime power {}: {}", target, pow(&target, &power));
        }
        parser::Action::Standard => {
            let target = args.get_target();
            let is_prime = standard(&target);
            println!("Standard Test: {} is prime: {}", target, is_prime);
        }
        parser::Action::Fermat => {
            let target = args.get_target();
            let is_prime = fermat(&target);
            println!("Fermat Test: {} is prime: {}", target, is_prime);
        }
        parser::Action::Generate => {
            let maximum = args.get_maximum();
            let primes = get_max_primes(maximum);
            println!("Primes upto {}: {:?}", maximum, primes);
        }
        parser::Action::MillerRabin => {
            let target = args.get_target();
            let is_prime = miller_rabin(&target);
            println!("Miller Rabin Test: {} is prime: {}", target, is_prime);
        }
        parser::Action::LucasLehmer => {
            let exp = args.get_mercenne_exp();
            let is_prime = lucas_lehmer_test(&exp);
            println!("Lucas Lehmer Test: M{} is prime: {}", exp, is_prime);
        }
    }
    let taken = now.elapsed();
    eprint!("Total time: {:?}", taken);
}