素數定義:一個數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; }