评测出来运行错误,请DALAO帮忙康康%%%,玄关
素数-大数据
题目描述:
素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积。例如,15=35,所以15不是素数。又如,12=62=43,所以12也不是素数。另一方面,13除了等于131以外,不能表示为其它任何两个整数的乘积,所以13是一个素数。 你的任务是计算出所有小于等于给定正整数的素数个数(我们认为1不是素数) 。
输入
输入文件中包含多个测试数据。每个测试数据占一行,为一个正整数N(0<N≤10000000),即给定正整数。测试数据一直到文件尾。
输出
对输入文件中的每个正整数,输出所有小于等于给定它的素数个数。
样例输入
2 3 4 5 9
样例输出
1 2 2 3 4
代码:
//码风不好,请各位DALAO见谅
#include<bits/stdc++.h>
using namespace std;
bool prime[100000001];
int maxn=-1,n[100000006],k=0;
int main(){
while(cin>>n[++k]){
maxn=max(n[k],maxn);
}
//i式素数筛选
for(int i=2;i<=maxn;i++){
if(prime[i]==0){
for(int j=i+i;j<=maxn;j=j+i){
prime[j]=1;
}
}
}
for(int i=1;i<k;i++){
int lj=0;
for(int j=2;j<=n[i];j++){
if(prime[j]==0)lj++;
}
cout<<lj<<endl;
}
return 0;
}