问题描述:
Count the number of prime numbers less than a non-negative number, n.
Example:
Input: 10 Output: 4 Explanation: There are 4 prime numbers less than 10, they are 2, 3, 5, 7.
解题思路:
首先对2~n的每一个数字进行判断:
从质数开始,将质数的倍数置为false
然后从2开始检查,注意题目中要求less than,所以条件为i<n
代码:
class Solution { public: int countPrimes(int n) { vector<bool> isPrime(n+1, true); for(int i = 2; i*i <= n; i++){ if(isPrime[i]){ for(int j = i*2; j <= n; j += i){ isPrime[j] = false; } } } int ret = 0; for(int i = 2; i < n; i++){ if(isPrime[i]) ret++; } return ret; } };