示例代碼:這是測試特殊素數的最快方法和新方法嗎?
bool is_special_prime (int N) {
QHash<int, int> o;
struct A_functor
{
int operator()(unsigned int n) { return n >> __builtin_ctz(n);}
}A;
int k = A(N + 1);
if(k == 1)
return 0;
o[k] = k;
int t = (N - 5) >> 1;
for(int i = 0; i < t; i++) {
k = A(N + k);
if(k == 1 || o.contains(k))
return 0;
o[k] = k;
}
return 1;
}
是這樣可以測試數字比最新的最大素2^57885161更大 - 1?
也許你可以解釋算法的作用,以及爲什麼你認爲它可能作爲一個素性測試?即便如此,在這裏可能沒有足夠的前沿數字理論家來驗證你的算法是否正確和新穎。據推測,「N」是潛在梅森素數的指數(例如57885161),而不是素數本身(對於int而言,這顯然太大)。 – 2013-05-03 12:27:05
這是正確的和新穎的。這種方式與int無關,這只是示例代碼。 – miket 2013-05-03 13:18:48
如果你知道這是正確的和新穎的,那麼你爲什麼在這裏問一些模糊的問題,而不是發表你的開創性研究?如果不是,那麼你需要提出一個更清晰的問題;如果不知道單字母變量代表的是什麼以及算術的位數應該達到什麼,那麼代碼有點難以遵循。 – 2013-05-03 13:26:36