質數的斷定

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;
}
相關文章
相關標籤/搜索