1个不稳定版本
0.2.21 | 2023年7月28日 |
---|---|
0.2.19 |
|
0.1.24 |
|
#375 在 算法 中
每月下载量 48
36KB
486 行
Prime-Checker
一个用于检查给定无符号、64位整数是否为素数的Rust示例包。
描述
请注意,在本节中, wherever we use square brackets, we are using the mathematical expression for an inclusive boundary.
任何整数(或自然数,取决于你问的人)num
,可以有以下三种素数属性
- 素数:它的因数列表正好是
[1, num]
. - 合数:它的因数列表是
[1, [z (- Z], num]
,其中z
可以是1
和num
之间的任何自然数。 - 反素数:它的因数列表与合数相同(除了特殊情况,如
1
、2
),但列表长度是该集合 [num-z
、num
] 中的最大值,即它仅具有任何小于它的自然数的最大因数数量。
该库包含帮助根据这三个标准确定和选择无符号、64位整数的函数。
文档
自动生成的Rust文档可以在Docs.RS网站上查看。
在新的版本上传后,可能需要几个小时才能传播文档,你可以在这里检查构建队列here.
我们将简要介绍在 lib.rs
文件中定义的函数的基本知识。
-
is_hcn()
-
检查给定的数字是否为高度复合数(反素数)。
-
参数:
num: u64
-
返回值:
bool | 默认: false
,Vec<u64>
,其中向量是给定数字num
的因数列表。 -
用法
use prime_checker; fn main(){ let num: u64 = z; // z belongs to the set of natural numbers and is only used as a placeholder by us in this README. let check: bool; let factors: Vec<u64>; (check, factors) = prime_checker::is_hcn(num: num); if check == true{ println!("{} is a highly composite number.", num); } else { println!("{} is not a highly composite number; here are its factors: {:?}", num, factors); } }
-
-
is_prime()
-
检查给定的数字是否为素数。
-
参数:
num: u64
-
返回值:
bool | 默认: false
,Vec<u64>
,其中向量是给定数字num
的因数列表。 -
用法
use prime_checker; fn main(){ let num: u64 = z; // z belongs to the set of natural numbers and is only used as a placeholder by us in this README. let check: bool; let factors: Vec<u64>; (check, factors) = prime_checker::is_prime(num: num); if check == true{ println!("{} is a prime number.", num); } else { println!("{} is not a prime number; here are its factors: {:?}", num, factors); } }
-
-
描述()
-
返回该库crate的简要描述,如果
show
设置为true
,则将其打印到控制台。 -
参数:
show: bool
-
返回值:
String
-
用法
use prime_checker; fn main(){ let desc_str = prime_checker::description(true); }
-
-
get_primes()
-
找到所有小于或等于给定数字的素数。
-
参数:
num: u64
-
返回值:
Vec<u64>
,其中向量是所有小于或等于给定数字num
的素数列表。 -
用法
use prime_checker; fn main(){ let num: u64 = z; // z belongs to the set of natural numbers and is only used as a placeholder by us in this README. let prime_numbers: Vec<u64>; prime_numbers = prime_checker::get_primes(num: num); println!("The prime numbers till {} are:\t{:?}", num, prime_numbers); }
-
-
get_hcn()
-
找到所有小于或等于给定数字的半素数。
-
参数:
num: u64
-
返回值:
Vec<u64>
,即所有小于或等于给定数字num
的高度复合数的列表。 -
用法
use prime_checker; fn main(){ let num: u64 = z; // z belongs to the set of natural numbers and is only used as a placeholder by us in this README. let anti_prime_numbers: Vec<u64>; anti_prime_numbers = prime_checker::get_hcn(num: num); println!("The anti-prime numbers till {} are:\t{:?}", num, anti_prime_numbers); }
-
警告: 高度未优化且计算成本高昂[^1]。
-
开发和贡献
如果您想为此库做出贡献,请遵循以下步骤。
贡献流程
- 指派或请求管理员指派您到所需问题;这是为了确保不会有两个或多个无关方独立解决相同的问题。
- 如果尚未完成,请将仓库分叉到您的GitHub账户。
- 如果您是首次贡献,请遵循以下章节中给出的步骤来设置开发环境。
- 检出名为问题编号URL安全版本的分支。
- 假设问题编号为
Misc_001
,则分支名称将为misc-001
。
- 假设问题编号为
- 按照要求对代码进行更改。
- 此外,在所需模块/文件中编写所需的任何附加测试用例。
- 运行
cargo test --verbose
以确保一切正常并得到验证。- 在所有测试通过之前,请勿继续进行。
- 使用有意义的提交消息提交您的更改。
- 与主仓库的
master
分支合并,并再次运行所有测试。- 在所有测试通过之前,请勿继续进行。
- 推送到origin。
- 向主仓库的
master
分支创建一个新的Pull Request
,并附带所需详细信息和一个合理的PR
标题。 - 如果需要审查更改,请重复步骤#5-9,直到不再需要更改。
开发环境设置
在继续之前,请确保满足先决条件。
不要使用Rust的nightly
构建。由于稳定版和nightly构建之间的差异,我们无法保证任何行为。
先决条件
- Rust编译器
- v1.6+ (稳定版)
- BASH
- Windows的GitBash
- Cargo
步骤
-
chmod +x scripts/*
用来给scripts
目录中的所有脚本执行权限。- 在执行此操作之前,您应该先检查这些脚本;这是良好的实践。
-
sh scripts/build.sh both
用来构建库的release
和debug
版本。 -
cargo test --verbose
以确保一切都被正确复制并且按预期工作。
致谢
(ɔ) 2023 Arkiralor (Prithoo Medhi)
[^1]: 检查 prime_checker::libs::constants::KNOWN_ANTIPRIMES
中最后一个元素之后的 6'160 个值大约需要 64 秒。
依赖关系
~10KB