质数数目
题目描述
实现一个算法求质数数目。介绍如下:
质数是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。
给定数字 n
,对于从 0 至 n
的数字,需要判断每个数字是否为质数,并输出质数总数。
输入描述
输入一个数字 n
:
1 ≤ n ≤ 10^5
输出描述
输出一行,表示从 0 到 n
之间(包括 n
)的质数个数。
输入输出样例
输入
5
输出
3
c++代码
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> primes, tem(n + 1, 1);
for (int i = 2; i <= n; i++) {
if (tem[i]) primes.push_back(i);
for (int j = 0; j < primes.size() && i * primes[j] <= n; j++) {
tem[i * primes[j]] = 0;
if (i % primes[j] == 0) break;
}
}
cout << primes.size();
return 0;
}//by wqs