质数的断定

ACwing866. 试除法断定质数

素数定义:一个数n,若是不能被[2,n-1]内的全部数整除,n就是素数。算法

固然,咱们能够把范围从[2,n-1]缩小到[2,根号n]code

证实以下:im

假设n=a*b,有min(a,b) <= 根号n ,令a <= b.只要检查[2,根号n]内的数。若是n不是素数,就能够找到一个a。若是不存在这个a,那么[根号n,n-1]内也不存在bco

算法以下:block

bool is_prime(int n)
{
    if (n <= 1)
        return false;  // 1不是素数
    for (int i = 2; i * i <= n; i++)  // 比for (int i = 2; i <= sqrt(n); i++) 更好
        if (n % i == 0)  // 能整除,不是素数
            return false;
    return true;
}
相关文章
相关标签/搜索