#prime #number-theory #algorithm

程序+库 primeshor

一个 Rust 项目,用于探索素数和分解

3 个不稳定版本

0.2.0 2024年3月17日
0.1.1 2024年2月25日
0.1.0 2024年2月13日

#1291 in 数学

MIT 许可证

8KB
73

primeshor

🚀 欢迎来到区块中最酷的 Rust 项目,primeshor!这不是你爷爷的那套数值计算库。我们来让素数检查和分解既快又有趣。

但等等,素数有什么好玩的's""你问。嗯,我们在这里是要向你展示素数不仅仅是密码学的基石。他们是数字世界的超级英雄,我们要庆祝他们所有的光辉。

更新至 0.2.0,通过解析字符串来处理 🚀 BigUint 以支持巨大的数字,确保它能够进行超出常规整数范围的运算!✨

快速入门

想要直接进入实战?这是你如何开始的步骤

use num_bigint::BigUint;
use primeshor::{factorize, is_prime};

fn main() {
    // Define the number as a string
    let n_str = "123456765343222456657333226789";
    // Convert the string to a BigUint
    let n = BigUint::parse_bytes(n_str.as_bytes(), 10).unwrap();

    match factorize(n.clone()) {
        Ok((factor1, factor2)) => println!("Factors of {}: {}, {}", n.clone(), factor1, factor2),
        Err(e) => println!("Error: {}", e),
    }

    if is_prime(n.clone()) {
        println!("{} is prime", n.clone());
    } else {
        println!("{} is not prime", n.clone());
    }
}

运行此代码片段,你会看到


Factors of 123456765343222456657333226789: 3529, 34983498255376156604514941
123456765343222456657333226789 is not prime

Shor 算法是什么?

现在,让我们稍微变得 nerdy 一下。你听说过 Shor 算法吗?它是在分解数字成素数因子方面像超级英雄一样的算法。🦸‍♂️

Shor 算法是一种用于整数分解的量子计算算法。用年轻人的话来说:这是一种超级快速的方法来找出哪些数字相乘得到你原来的数字,但它使用的是量子比特而不是比特,就像是你的量子密友,用于密码学。

有多快?

在传统的计算世界中,分解大数需要很长时间(我们说的是绝对超过你的耐心水平)。但是,使用 Shor 算法,你可以在多项式时间内分解这些大数。没错,它在 O((log n)^2 (log log n) (log log log n)) 时间内运行,这使得它比在经典计算机上运行的最佳算法快得多。

为什么选择 primeshor

虽然我们还没有在量子计算机上运行(还没有呢 😉),primeshor旨在将一点那种兴奋感带入Rust生态系统。无论你是数学爱好者、初出茅庐的密码学家,还是为了量子革命而来,primeshor都是你探索素数和因式分解奇迹的首选库。

所以,克隆仓库,深入研究文档,开始实验吧。谁知道呢?也许你将成为第一个在经典计算机上模拟Shor算法的人(或者至少在尝试中找到乐趣)。


记住,primeshor的宗旨是将复杂化简,将平凡变得有趣。祝您编码愉快!🎉

依赖项

~485KB
~10K SLoC