第2个回答 2012-06-12
#include <iostream>
#include "math.h"
using namespace std;
int sushu(int n)
{
int i;
for (i=2;i<=sqrt(n);++i)
if (n%i==0)
return 0;
return 1;
}
int main()
{
int i,c=0;
for (i=2;i<=10000;++i)
if (sushu(i))
++c;
cout<<c;
return 0;
}
第4个回答 2020-02-29
欧拉筛不更好吗
#include<bits/stdc++.h>using namespace std;const int MAX_N=1e7;int p[MAX_N+10],b[MAX_N+10],tot=0,n;inline int MIN(int a,int b){ return a<b?a:b;
}inline void INIT(){ scanf("%d",&n);
}inline void WORK(){ for(register int i=2;i<n;i++){ if(p[i]==0)b[tot++]=i,p[i]=i; int d=MIN(n/i,p[i]); for(register int j=0;j<tot&&b[j]<=d;++j){ int x=b[j]*i;
p[x]=b[j];
}
}
}inline void PRINT(){ int m; scanf("%d",&m); while(m--){ int x; scanf("%d",&x); if(p[x]==x)cout<<"Yes\n"; else cout<<"No\n";
}
}int main(){
INIT();
WORK();
PRINT(); return 0;
}
这里把100000输入,就能把10000以内的素数保存在数组b中.