素性测试
素性测试或素数判定,是检验一个给定的整数是否为质数的测试。
素数判定的历史
鉴别一个自然数是素数还是合数,这个问题在中世纪就引起人们注意,当时人们试图寻找质数公式,到了高斯时代,基本上确认了简单的质数公式是不存在的,因此,高斯认为对素性判定是一个相当困难的问题。从此以后,这个问题吸引了大批数学家。 质性判断算法可分为两大类,确定性算法及随机算法。前者可给出确定的结果但通常较慢,后者则反之。详见以下列表。
确定型算法
- 试除法(埃拉托斯特尼筛法)
- 尝试从 到 的整数是否整除 。
// 以 C 语言实现埃拉托斯特尼筛法
// 用以判断质数的 is_prime 副函数
int is_prime(int x)
{
if(x < 2) return 0; // 1 不是质数,且不考虑负整数与 0,故输入 x<=1 时回传 0
for(int i = 2; i * i <= x; ++i)
if(x % i == 0) return 0; // 一旦出现整除,回传 0
return 1; // 循环跑完后都没有整除,回传 1
}
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.