サンプルコード:
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 より大きい数値をテストできますか?