除了1和它本身以外,不能被任何整数整除的数,就称为素数,例如17就是素数,因为它不能被2-16的任一整数整除
m能被2~m-1之间任一整数整除,其两个因子必有一个小于或者等于√m,另一个大于或者等于√m。例如16能被2、4、8整除,16=2* 8中,2小于4,8大于4。在16=4* 4中4=√16。因此只需要判定 2 ~ 4之间有无因子即可。只需要被2 ~ √m之间的每一个整数去除就可以了
代码:
bool isPrime(int n){for (int i = 2; i <= sqrt(n); ++i)if (n % i == 0)return false;return true;}