#prime #prime-factors #iterator #numbers #sieve #eratosthenes #factor

primes

一个使用埃拉托斯特尼筛法计算素数的包,并使用它来检查一个数是否为素数以及计算因子。包括所有素数的迭代器。

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算法

Download history 1780/week @ 2024-04-29 1878/week @ 2024-05-06 1414/week @ 2024-05-13 1659/week @ 2024-05-20 1480/week @ 2024-05-27 2696/week @ 2024-06-03 1768/week @ 2024-06-10 3290/week @ 2024-06-17 3238/week @ 2024-06-24 1324/week @ 2024-07-01 2310/week @ 2024-07-08 3175/week @ 2024-07-15 2170/week @ 2024-07-22 3208/week @ 2024-07-29 1568/week @ 2024-08-05 2177/week @ 2024-08-12

9,235 每月下载量
13 包中使用 (11 个直接使用)

BSD-3-Clause

15KB
303

primes

Build Status Build Status

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 无关的函数,对于第一种情况来说会更快,但从长远来看会变慢,因为它们不缓存素数。

无运行时依赖