南昌理工学院ACM集训队
- 什么是质数
质数又称素数.指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数. - 查找某个数是否为素数
方法一:
根据定义,判断一个整数n是否是素数,只需要去判断在整数区间[2, n-1]之内,是否具有某个数m,使得n % m == 0。
代码:
int isPrime(int n)//时间复杂度O(n)
{
int i;
for (i = 2; i < n; ++i)
{
if (n % i == 0)
return 0;
}
return 1;
}
总结:这个算法是O(n)的,但是依旧无法满足需求。
方法二:
对上面的进行改良:
代码:
int isPrime(int n)//时间复杂度O(sqrt(n))
{
int i;
for (i = 2; i * i <= n; ++i)
{
if (n % i == 0)
return 0;
}
return 1;
}
总结: O(n)优化到O(sqrt(n)),是因为a * b = c的话一旦a是c的约数,那么b也是,如果a不