素数的定义
-
素数又称质数,指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。
-
换句话说,只有两个正因数(1和自己)的自然数即为素数。比1大但不是素数的数称为合数。
-
1和0既非素数也非合数。
-
合数是由若干个质数相乘而得到的,所以,质数是合数的基础,没有质数就没有合数。
算法原理
按照定义,从2到n-1判断有没有能整除n的数。如果有,则不是素数,否则,是素数,这样算法复杂度是O(n)。
再进一步分析,一个数不是素数就是合数, 那么一定可以由两个自然数相乘得到, 其中一个大于或等于它的平方根,一个小于或等于它的平方根。并且成对出现。所以我们只需从2一直算到sqrt(n)。
判断素数isPrime()
bool isPrime(int n){
i