素数定义:一个数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; }