#素数 #大数 #因子 #整数运算

number-theory

为整数类型提供快速素性检验、因式分解和初等数论

24 个版本

0.0.24 2023 年 11 月 9 日
0.0.23 2023 年 4 月 4 日
0.0.21 2023 年 2 月 16 日
0.0.17 2022 年 12 月 1 日
0.0.0 2021 年 12 月 26 日

#148 in 数学

Download history 9/week @ 2024-05-20 5/week @ 2024-06-03 2/week @ 2024-06-10 2/week @ 2024-06-17

103 个月下载量
2 crate 中使用

MIT 许可证

305KB
7.5K SLoC

ENT

Rust 中整数初等数论

目前公开可用的区间 0;2^64 + 2^49 中素性检验最快的证明正确的库。使用素性和因式分解的代数定义,允许进行如 -127.is_prime() 返回 true 以及将唯一因式分解视为无符号的检查。作为 number-theory 发布在 crates.io 上

当前实现以下功能

  • 素性
  • 因式分解
  • 最大公约数,扩展最大公约数
  • Carmichael, Euler & Jordan 同余数
  • Dedekind psi
  • Liouville 和 Möbius 函数
  • 素数计数函数/nth-prime,以及素数列表
  • 整数平方根/nth 次方根
  • 整数根号
  • K-free
  • 二次和指数剩余
  • 勒让德符号
  • Jacobi 符号
  • 光滑度检查

此外,此库还实现了以前 NT 函数的任意精度整数实现,以及一些基本的算术。乘法使用 Karatsuba 算法,其他所有算术可以假设为朴素。

  • 加法/减法
  • 乘法
  • 欧几里得除法
  • 转换为和从十进制字符串转换
  • 后继函数(+1)
  • SIRP 因子(阶乘的推广)
  • 条件区间积(CIP 阶乘)
  • 平方根/nth 次方根
  • 指数运算
  • 对数
  • 可能的伪素数构造

使用相当简单

// include NT functions
use number_theory::NumberTheory;
// include arbitrary-precision arithmetic
use number_theory::Mpz;
  // Sign, generally unnecessary for ENT
//use number_theory:Sign; 
let mersenne = Mpz::from_string("-127").unwrap(); 
assert_eq!(mersenne.is_prime(), true);
 // Or for a more complex example
 
 // check if x mod 1 === 0, trivial closure
 let modulo = |x: &u64| {if x%1==0{return true} return false};
 
  //Generate  872 factorial, using the above trivial function
  // this can be just as easily reproduced as Mpz::sirp(1,872,1,0);
 let mut factorial = Mpz::cip(1, 872,modulo);
 
 // Successor function, increment by one
 factorial.successor();
 
 // 872! + 1 is in-fact a factorial prime
 assert_eq!(factorial.is_prime(),true)

依赖项

~1.5MB
~17K SLoC