【发布时间】:2013-05-03 11:33:30
【问题描述】:
示例代码:
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来说显然太大了)。 -
正确新颖。这种方式与int无关,只是示例代码。
-
如果您知道它是正确且新颖的,为什么还要在这里提出模糊的问题而不是发表您的开创性研究?如果没有,那么你需要问一个更清楚的问题;如果不知道单字母变量代表什么以及算术位应该实现什么,则代码有点难以理解。
-
我说它是正确的和新颖的,但我不确定所以我问。
-
@miket 我会说试试 math.stackexchange.com,但在提出问题之前,您必须通过解释进一步扩展您的答案(SO 接受涵盖所有经验范围的问题,而 math.stackexchange 只允许非常高级的问题)。