求素数的个数。本题要求编写一个程序,求1~n的素数个数。 要求至少给出两种解法,对于相同的n,给出这两种解法的结果,通过相关数据进行测试,目的是通过对比同一问题不同解法的绝对执行时间体会如何设计“好”的算法。
输入格式:
输入在一行中给出1个整数n(<= 10 000 000)。
输出格式:
对每一组输入,在一行中输出1~n的素数个数。
输入样例1:
5
输出样例1:
3
输入样例2:
14
输出样例2:
6
code:
#include<bits/stdc++.h>
using namespace std;
int a[10000005];
int gs(int n){//筛选法找素数
int t=n-1;
fill(a+1,a+n+1,0);
for(int i=2;i<=n;i++){
if(a[i]==0){
for(int j=2;j<=n/i;j++){
if(a[j*i]==0) {
t--;
a[j*i]=1;
}
}
}
}
return t;
}
int main(){
int n;
scanf("%d",&n);
printf("%d",gs(n));
return 0;
}