15 个版本
0.4.0 | 2024 年 6 月 7 日 |
---|---|
0.3.0 | 2020 年 3 月 8 日 |
0.2.4 | 2019 年 12 月 26 日 |
0.2.3 | 2018 年 8 月 29 日 |
0.1.0 | 2014 年 11 月 26 日 |
#100 在 算法 中
9,235 每月下载量
在 13 个 包中使用 (11 个直接使用)
15KB
303 行
primes
Rust 的素数生成器。
此包可在 crates.io 上找到,作为 primes
。
此包提供了一个所有素数的迭代器,在迭代过程中懒加载生成。
最简单的用法是创建一个 Iterator
use primes::PrimeSet;
let mut pset = PrimeSet::new();
for (ix, n) in pset.iter().enumerate().take(10) {
println!("Prime {}: {}", ix, n);
}
有关更多示例,请参阅 完整文档!
lib.rs
:
一个用于查找素数的基本库,提供了一个所有素数的基本迭代器。它不如 slow_primes
快,但它易于使用!
最简单的用法是创建一个 Iterator
use primes::{Sieve, PrimeSet};
let mut pset = Sieve::new();
for (ix, n) in pset.iter().enumerate().take(10) {
println!("Prime {}: {}", ix, n);
}
此库提供生成素数、测试一个数是否为素数以及分解数的方法。大多数方法都懒加载生成素数,因此只为给定的测试生成足够的素数,并且缓存素数以供后续使用。
示例:查找一百万之后的第一个素数
use primes::{Sieve, PrimeSet};
let mut pset = Sieve::new();
let (ix, n) = pset.find(1_000_000);
println!("Prime {}: {}", ix, n);
示例:查找一千个素数之后的第一个素数
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);
}
示例:查找大于 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));
有关使用方法的更多信息,请参阅 PrimeSet
,它封装了大多数功能,并具有多个迭代素数的方法。
这还提供了一些与 PrimeSet
无关的函数,对于第一种情况来说会更快,但从长远来看会变慢,因为它们不缓存素数。