原题链接 https://leetcode.com/problems/count-primes/
Description:
Count the number of prime numbers less than a non-negative number, n.
数素数有多少个。
方法可以用一般的方法,就是判断从1-sqrt(n) 有没有能够整除的数。
当然可以排除一些数,比如除2以外偶数都不是素数。
当然还有一种方法叫素数测试,就是利用费马小定理和二次探测,可以在很大的概率下该数就是素数。
class Solution {
public:
int countPrimes(int n) {
int ans = 0;
if (n > 2)ans++;
for (int i = 3; i < n; i += 2)
if (isPrime(i))ans++;
return ans;
}
bool isPrime(int& x)
{
int up = sqrt(x);
for (int i = 3; i <= up; i += 2)
{
if (x % i == 0)return false;
}
return true;
}
};