1.7.4求质数的个数
【问题描述】
输入一个整数n,求2~n之间质数的个数
【输入】
输入一个整数
【输出】
输出一行:表示有质数的个数
【样例输入】
3
【样例输出】
2
【样例说明】
样例说明:在2~3之间有,2和3两个质数
【数据规模】:
2<=n<=1000000
#include <iostream>
using namespace std;
const int Max = 1000001;
int check[Max] = {0};
int prime[Max] = {0};
void isPrime(){
for(int i = 2; i < Max; i++){
if(!check[i]){
prime[++prime[0]] = i;
}
for(int j = 1; j <= prime[0] && i*prime[j] < Max; j++){
check[i*prime[j]] = 1;
if(i%prime[j] == 0){
break;
}
}
}
}
int main(int argc, const char * argv[]) {
isPrime();
int n,num = 0;//计数
cin >> n;
for(int i = 2;i <=n ; i++){
if(!check[i]){
num++;
}
}
cout << num << endl;
return 0;
}```