【发布时间】:2012-03-02 14:55:47
【问题描述】:
我有一个算法来测试素数,它使用此处列出的幼稚实现http://en.wikipedia.org/wiki/Primality_test#Naive_methods
static boolean check(int n)
{
if(n == 2 || n == 3)
{
return true;
}
if(n < 2 || n % 2 == 0 || n % 3 == 0)
{
return false;
}
for(int i = 6; i * i <= n; i += 6)
{
if(n % (i - 1) == 0 || n % (i + 1) == 0)
{
return false;
}
}
return true;
}
我一直到 6k+1 部分,但在那之后,我迷路了。我还能如何进一步优化速度?
【问题讨论】:
-
我觉得这个属于codereview,类似问题codereview.stackexchange.com/q/8667/9534
-
值得记住的是,大多数数字将被
n % 2和n % 3检查消除,因此您之后做什么并不那么重要。优化此模式的最简单方法是更改调用方式。即优化调用者。
标签: java c++ performance optimization