Rust素数筛库primal-sieve的使用,高性能素数生成与质数计算工具
Rust素数筛库primal-sieve的使用,高性能素数生成与质数计算工具
安装
在项目目录中运行以下Cargo命令:
cargo add primal-sieve
或者在Cargo.toml中添加以下行:
primal-sieve = "0.3.7"
使用示例
primal-sieve是一个高性能的素数生成库,提供多种素数相关的计算功能。以下是基本使用示例:
use primal_sieve::Sieve;
fn main() {
// 创建一个上限为100万的素数筛
let sieve = Sieve::new(1_000_000);
// 检查数字是否为素数
println!("17是素数吗? {}", sieve.is_prime(17));
println!("25是素数吗? {}", sieve.is_prime(25));
// 获取第100个素数
println!("第100个素数: {}", sieve.nth_prime(100));
// 获取小于等于100的素数数量
println!("≤100的素数数量: {}", sieve.prime_pi(100));
// 获取小于等于100的所有素数
println!("≤100的所有素数:");
for prime in sieve.primes_from(0).take_while(|&p| p <= 100) {
print!("{} ", prime);
}
println!();
// 分解质因数
println!("123456的质因数分解:");
for (prime, exponent) in sieve.factor(123456).unwrap() {
print!("{}^{} ", prime, exponent);
}
println!();
}
完整示例
以下是一个更完整的示例,展示primal-sieve库的主要功能:
use primal_sieve::Sieve;
fn main() {
// 创建素数筛
let upper_limit = 10_000_000;
let sieve = Sieve::new(upper_limit);
println!("已创建上限为{}的素数筛", upper_limit);
// 素数测试
let test_numbers = [2, 17, 25, 31, 100, 997];
for &n in &test_numbers {
println!("{}是素数吗? {}", n, sieve.is_prime(n));
}
// 获取第n个素数
let nth_primes = [1, 10, 100, 1000];
for &n in &nth_primes {
println!("第{}个素数: {}", n, sieve.nth_prime(n));
}
// 素数计数函数π(x)
let pi_points = [10, 100, 1000, 10_000];
for &x in &pi_points {
println!("π({}) = {}", x, sieve.prime_pi(x));
}
// 生成素数序列
println!("前20个素数:");
for (i, prime) in sieve.primes_from(0).take(20).enumerate() {
println!("{}. {}", i+1, prime);
}
// 质因数分解
let numbers_to_factor = [12, 123, 1234, 12345, 123456];
for &n in &numbers_to_factor {
print!("{} = ", n);
let factors = sieve.factor(n).unwrap();
let mut first = true;
for (prime, exp) in factors {
if !first { print!(" × "); }
first = false;
if exp == 1 {
print!("{}", prime);
} else {
print!("{}^{}", prime, exp);
}
}
println!();
}
// 生成双子素数对
println!("小于1000的双子素数对:");
let mut prev_prime = 2;
for prime in sieve.primes_from(3).take_while(|&p| p < 1000) {
if prime - prev_prime == 2 {
println!("({}, {})", prev_prime, prime);
}
prev_prime = prime;
}
}
功能说明
primal-sieve库提供以下主要功能:
- 素数检测:快速判断一个数是否为素数
- 素数生成:生成素数序列
- 素数计数:计算不超过x的素数数量(π(x))
- 第n个素数:查找第n个素数
- 质因数分解:将数字分解为质因数乘积形式
该库使用优化的筛法算法,性能优异,适合需要大量素数计算的场景。
1 回复