如何找到一个小于n的最大质数,其中n≤10¹? 请帮我找一个有效的算法。找到一个小于n的最大素数
for(j=n;j>=2;j--) {
if(j%2 == 1) {
double m = double(j);
double a = (m-1)/6.0;
double b = (m-5)/6.0;
if(a-(int)a == 0 || b-(int)b == 0) {
printf("%llu\n",j);
break;
}
}
}
我使用了这种方法,但是这对解决n> 10^10并不有效;
如何优化这个..
编辑: 解决方案:使用素性测试对每个JC。
我们坚持认为人们在这里提出编程问题。做一些研究,提出一个算法,然后如果你的某个方面难倒了你,就回到这里。 – 2013-05-04 15:05:44
我在这方面做了很多研究...使用了复杂度为O(nlog(n))的算法,但现在想要更高效.. – upendrajat 2013-05-04 15:07:36
您可能已经发现了这一点,但仍然给出了一些参考:http:// stackoverflow .com/questions/6741947/algorithm-to-find-largest-prime-number-smaller-than-x – 2013-05-04 15:11:44