AKS算法

AKS算法

AKS算法是来由自 Indian Institute of Technology Kanpur 的三名计划机科学家创造,取其姓氏首假名定名。其实质为:

AKS算法

一个数n是素数,当且仅当多项式

打开后的一切系数都不妨被n整除。

代码如次:

long long c[100];

void coef(int n)

{

int i, j;

if (n < 0 || n > 63) abort(); // gracefully deal with range issue

for (c[i=0] = 1; i < n; c[0] = -c[0], i++)

for (c[1 + (j=i)] = 1; j > 0; j--)

c[j] = c[j-1] - c[j];

}

int is_prime(int n)

{

int i;

coef(n);

c[0] += 1, c[i=n] -= 1;

while (i-- && !(c[i] % n));

return i < 0;

}

AKS算法不妨在多项式搀杂度内判决任何数,但系数延长过快,仍旧不够适用。

暂时并没有爆发随机大素数的灵验本领。所以要爆发一个大素数的本领是,随机采用一个充满大的单数并检查它能否是素数,即使不是则从新采用一个连接检查直到某个单数经过尝试。该本领的缺陷是经过检查的单数大概仍旧不是素数,但不妨依照须要做到使得经过检查的单数不是素数的几率尽大概逼近0。常用的几率确定本领有 Fermat 小定理、Miller−Rabin 算法及Solovay−Strassen算法。

分享到 :
相关推荐

Leave a Reply

Your email address will not be published. Required fields are marked *