#prime-factors #math #algorithm

primes

A package for calculating primes using the Sieve of Eratosthenes, and using that to check if a number is prime and calculating factors. Includes an iterator over all primes.

15 releases

0.4.0 Jun 7, 2024
0.3.0 Mar 8, 2020
0.2.4 Dec 26, 2019
0.2.3 Aug 29, 2018
0.1.0 Nov 26, 2014

#158 in Algorithms

Download history 1581/week @ 2024-08-04 2239/week @ 2024-08-11 2557/week @ 2024-08-18 2212/week @ 2024-08-25 2475/week @ 2024-09-01 3045/week @ 2024-09-08 2047/week @ 2024-09-15 1924/week @ 2024-09-22 2497/week @ 2024-09-29 3413/week @ 2024-10-06 2017/week @ 2024-10-13 2072/week @ 2024-10-20 2574/week @ 2024-10-27 2363/week @ 2024-11-03 2500/week @ 2024-11-10 2577/week @ 2024-11-17

10,097 downloads per month
Used in 15 crates (12 directly)

BSD-3-Clause

15KB
303 lines

primes

Build Status Build Status

A prime generator for Rust.

This package is available on crates.io as primes.

This package provides an iterator over all primes, generating them lazily as it goes.

The simplest usage is simply to create an Iterator:

use primes::PrimeSet;

let mut pset = PrimeSet::new();

for (ix, n) in pset.iter().enumerate().take(10) {
    println!("Prime {}: {}", ix, n);
}

For more examples, see the full documentation!


lib.rs:

A basic library for finding primes, providing a basic Iterator over all primes. It is not as fast as slow_primes, but it is meant to be easy to use!

The simplest usage is simply to create an Iterator:

use primes::{Sieve, PrimeSet};

let mut pset = Sieve::new();

for (ix, n) in pset.iter().enumerate().take(10) {
println!("Prime {}: {}", ix, n);
}

This library provides methods for generating primes, testing whether a number is prime, and factorizing numbers. Most methods generate primes lazily, so only enough primes will be generated for the given test, and primes are cached for later use.

Source

Example: Find the first prime after 1 million

use primes::{Sieve, PrimeSet};

let mut pset = Sieve::new();
let (ix, n) = pset.find(1_000_000);

println!("Prime {}: {}", ix, n);

Example: Find the first ten primes after the thousandth prime

use primes::{Sieve, PrimeSet};

let mut pset = Sieve::new();
for (ix, n) in pset.iter().enumerate().skip(1_000).take(10) {
println!("Prime {}: {}", ix, n);
}

Example: Find the first prime greater than 1000

use primes::{Sieve, PrimeSet};

let mut pset = Sieve::new();
let (ix, n) = pset.find(1_000);
println!("The first prime after 1000 is the {}th prime: {}", ix, n);

assert_eq!(pset.find(n), (ix, n));

For more info on use, see PrimeSet, a class which encapsulates most of the functionality and has multiple methods for iterating over primes.

This also provides a few functions unconnected to PrimeSet, which will be faster for the first case, but slower in the long term as they do not use any caching of primes.

No runtime deps