#prime #sample #unsigned-integer #library

prime-checker

Rust库包,用于包含检查给定无符号、64位整数是否为素数的示例函数

1个不稳定版本

0.2.21 2023年7月28日
0.2.19 2023年5月8日
0.1.24 2023年5月5日

#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. 素数:它的因数列表正好是 [1, num].
  2. 合数:它的因数列表是 [1, [z (- Z], num],其中 z 可以是 1num 之间的任何自然数。
  3. 反素数:它的因数列表与合数相同(除了特殊情况,如 12),但列表长度是该集合 [num-znum] 中的最大值,即它仅具有任何小于它的自然数的最大因数数量。

该库包含帮助根据这三个标准确定和选择无符号、64位整数的函数。

文档

自动生成的Rust文档可以在Docs.RS网站上查看。

在新的版本上传后,可能需要几个小时才能传播文档,你可以在这里检查构建队列here.

我们将简要介绍在 lib.rs 文件中定义的函数的基本知识。

  1. is_hcn()

    • 检查给定的数字是否为高度复合数(反素数)。

    • 参数: num: u64

    • 返回值: bool | 默认: falseVec<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);
          }
      }
      
  2. is_prime()

    • 检查给定的数字是否为素数。

    • 参数: num: u64

    • 返回值: bool | 默认: falseVec<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);
          }
      }
      
  3. 描述()

    • 返回该库crate的简要描述,如果show设置为true,则将其打印到控制台。

    • 参数: show: bool

    • 返回值: String

    • 用法

      use prime_checker;
      
      fn main(){
          let desc_str = prime_checker::description(true);
      }
      
  4. 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);
      }
      
  5. 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]。

开发和贡献

如果您想为此库做出贡献,请遵循以下步骤。

贡献流程

  1. 指派或请求管理员指派您到所需问题;这是为了确保不会有两个或多个无关方独立解决相同的问题。
  2. 如果尚未完成,请将仓库分叉到您的GitHub账户。
  3. 如果您是首次贡献,请遵循以下章节中给出的步骤来设置开发环境。
  4. 检出名为问题编号URL安全版本的分支。
    • 假设问题编号为Misc_001,则分支名称将为misc-001
  5. 按照要求对代码进行更改。
    • 此外,在所需模块/文件中编写所需的任何附加测试用例。
  6. 运行cargo test --verbose以确保一切正常并得到验证。
    • 在所有测试通过之前,请勿继续进行。
  7. 使用有意义的提交消息提交您的更改。
  8. 与主仓库的master分支合并,并再次运行所有测试。
    • 在所有测试通过之前,请勿继续进行。
  9. 推送到origin。
  10. 向主仓库的master分支创建一个新的Pull Request,并附带所需详细信息和一个合理的PR标题。
  11. 如果需要审查更改,请重复步骤#5-9,直到不再需要更改。

开发环境设置

在继续之前,请确保满足先决条件。

不要使用Rust的nightly构建。由于稳定版和nightly构建之间的差异,我们无法保证任何行为。

先决条件

  1. Rust编译器
    • v1.6+ (稳定版)
  2. BASH
    • Windows的GitBash
  3. Cargo

步骤

  1. chmod +x scripts/* 用来给 scripts 目录中的所有脚本执行权限。

    • 在执行此操作之前,您应该先检查这些脚本;这是良好的实践。
  2. sh scripts/build.sh both 用来构建库的 releasedebug 版本。

  3. cargo test --verbose 以确保一切都被正确复制并且按预期工作。

致谢

(ɔ) 2023 Arkiralor (Prithoo Medhi)

[^1]: 检查 prime_checker::libs::constants::KNOWN_ANTIPRIMES 中最后一个元素之后的 6'160 个值大约需要 64 秒。

依赖关系

~10KB