数学问题
题目详情
给定整数 n
,返回 所有小于非负整数 n
的质数的数量 。
示例1:
输入:n = 10
输出:4
解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。
示例2:
输入:n = 0
输出:0
示例3:
输入:n = 1
输出:0
思路:
本题利用埃拉托斯特尼筛法,简称埃氏筛法,它可以判断一个数是否是质数,并且它可以在判断一个整数 n
时,同时判断所小于 n
的整数
原理:
从 1 到 n 遍历,假设当前遍历到 m,则把所有小于 n 的、且是 m 的倍
数的整数标为和数;遍历完成后,没有被标为和数的数字即为质数。
我的代码:
class Solution
{
public:
int countPrimes(int n)
{
if (n