algorithm - 素数校验算法

标签 algorithm cryptography

素性检查可能是数学中“那些”棘手的问题之一。那么,什么是最好和最快的算法来检查一个巨大的数字的素性。最粗暴和最慢的方式可能是:

public static bool IsPrime(int i)
{
    for (var x = 2; x < i - 1; i++)
    {
         if (i % x == 0)
         {
             return false;
         }
    }
    return true;
}

最近看到768位RSA算法被暴力破解,使用网格计算阵列。他们如何对一个巨大的素数进行暴力破解?每个处理单元是否占用一系列数字,将其分解并检查该范围内所有数字的素数?

最佳答案

查看 primality tests在维基百科上获取指向当前算法的指针

关于您的天真实现,请注意,如果数字可以被 2 整除,您可以立即返回 false,这样您就可以只检查奇数。另外,如果你没有找到 x <= sqrt(i) 的因子,它就是质数。这是因为如果您确实找到了一个大于 sqrt(i) 的因子,那么它必须与一个小于 小于 sqrt(i) 的因子配对。因此,如果您没有首先找到那个较小的因素,那么您就完了。

在您必须成群结队前往 https://mathoverflow.net/ 之前,您还可以将更多技巧应用于朴素算法。寻求帮助:)

关于algorithm - 素数校验算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2055300/

相关文章:

algorithm - Unity 销毁对象及其对象列表

javascript - 是否有快速算法来解决难题

security - 如何创建时间限制的哈希/ key ?

java - 如何在 Java 中使用密码学?

java - 在 Java 中从 PEM 字符串创建 DSA 公钥

algorithm - 使用二进制索引树(Fenwick 树)解决范围最小查询

PHP:生成填字游戏的脚本?

c++ - 使用 set_union 合并两个集合时分配只读位置

c - 如何破解弱化的 TEA 分组密码?

Python 开源密码学工具包