素性检查可能是数学中的“那些”难题之一。那么,什么是可用于检查大数素数的最好、最快的算法。最粗暴、最慢的方法可能是:
public static bool IsPrime(int i)
{
for (var x = 2; x < i - 1; i++)
{
if (i % x == 0)
{
return false;
}
}
return true;
}
最近我读到768位RSA算法已经被暴力破解,使用网格计算阵列。他们如何对一个巨大的素数进行暴力破解?每个处理单元是否占用一系列数字,将其分解并检查该范围内所有数字的素数?
查看素性测试 http://en.wikipedia.org/wiki/Primality_test在维基百科上查找当前算法的指针
关于你的简单实现,请注意,如果数字可以被 2 整除,你可以立即返回 false,这样你就可以只检查奇数。另外,如果找不到 x smaller比 sqrt(i) 。因此,如果您没有首先找到较小的因子,那么您就完成了。
在你必须成群结队之前,你还可以将更多技巧应用于简单的算法https://mathoverflow.net/ https://mathoverflow.net/求助 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)