AKS算法
admin
2023-07-30 19:52:00
0

AKS算法是由来自 Indian Institute of Technology Kanpur 的三名计算机科学家发明,取其姓氏首字母命名。其内容为:

一个数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算法。

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
项目管理和工程管理的区别 项目管理 项目管理,顾名思义就是专注于开发和完成项目的管理,以实现目标并满足成功标准和项目要求。 工...