Crates.io | prime-iter |
lib.rs | prime-iter |
version | 0.1.0 |
source | src |
created_at | 2022-10-20 19:31:25.727487 |
updated_at | 2022-10-20 19:31:25.727487 |
description | An incremental-sieve based prime generator |
homepage | |
repository | https://github.com/booleancoercion/prime-iter |
max_upload_size | |
id | 692881 |
size | 21,517 |
A somewhat optimized incremental-sieve based prime generator.
The interface is given in the form of an iterator, so usage is very simple and idiomatic:
let fifty_second_prime = prime_iter::primes::<i32>().nth(51).unwrap();
assert_eq!(fifty_second_prime, 239);
let prime_sum: i32 = prime_iter::primes::<i32>().take(100).sum();
assert_eq!(prime_sum, 24133);
let two_digit_primes: Vec<i32> = prime_iter::primes::<i32>().skip_while(|&x| x < 10).take_while(|&x| x < 100).collect();
assert_eq!(two_digit_primes, [11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]);
And of course for
loops work too:
for prime in prime_iter::primes::<i32>() {
if prime % 10 == 1 {
println!("{prime}");
}
}
no_std
Supportprime-iter
supports no-std environments, however it does use allocations. Disable the std
feature,
which is enabled by default, for a no_std environment.
Either add this line to your Cargo.toml
:
prime-iter = "0.1"
Or simply run cargo add prime-iter
.
Licensed under either of:
at your option.