elr_primes

Crates.ioelr_primes
lib.rselr_primes
version0.1.2
sourcesrc
created_at2020-07-04 23:53:27.741087
updated_at2020-07-27 05:18:17.664444
descriptionProvides a prime number iterator and methods for basic calculations with prime numbers.
homepage
repositoryhttps://github.com/elrolfe/elr_primes.git
max_upload_size
id261463
size17,016
Eric Rolfe (elrolfe)

documentation

README

Prime Number Iterator and Calculations

This library provides a structure for iterating through prime numbers as well as methods for calculating prime factors and classifying numbers as prime or composite.

API Reference (docs.rs)

Using this library

Add the following to your Cargo.toml file

[dependencies]
elr_primes = "0.1.2"

Examples

Basic Usage:

use elr_primes::Primes;

// Provides an iterator for all prime numbers less than or equal to 1000
let mut p = Primes::new(1000);

Once the structure has been initiated, the primes() method provides an iterator for the prime numbers.

# use elr_primes::Primes;
let p = Primes::new(10);  // Primes less than or equal to 10
let mut prime_iter = p.primes();
let primes: Vec<usize> = prime_iter.copied().collect();
let expected: [usize; 4] = [2, 3, 5, 7];
assert_eq!(primes, expected);

Since primes() returns an iterator, you can also use it to directly find a specific prime number.

# use elr_primes::Primes;
let p = Primes::new(100); // Primes less than or equal to 100
let n = 20;

// Iterators are zero-based, so to get the 20th prime we need to search for the 19th
match p.primes().nth(n - 1) {
    Some(x) => println!("The {}th prime is: {}", n, x),
    None => println!("The {}th prime is outside the current bounds", n)
};

Methods are also available to find the prime factors of a number, and whether a number is prime or composite.

use elr_primes::{Primes, Primality};
let p = Primes::new(100);

let n = 96;
match p.factors(n) {
    Ok(factors) => println!("{:?}", factors),
    Err(_) => println!("Could not find all prime factors within the bounds"),
};

let n = 23;
match p.primality(n) {
    Primality::Prime => println!("{} is prime", n),
    Primality::Composite => println!("{} is composite", n),
    Primality::Unknown => println!("Primality of {} is undetermined", n),
};
Commit count: 3

cargo fmt