ZSCOJ-1133(又见素数)

又见素数

Time Limit:2000MS  Memory Limit:65536K
Total Submit:200 Accepted:8

Description

给定一个正整数n(n <= 10000000),求n(包含)以内素数的个数。

Input

第一行为一个整数t(t <= 1000),表示测试数据的组数。
接下来有t行,每行一个整数n。

Output

对于每个n,求n以内素数的个数。

Sample Input

2
5
10

 

Sample Output

3
4

 

Source

#include <iostream> using namespace std; const int N = 10000001; bool prime[N]; int sum[N]={0,0,1}; int main() { double a1,a2; int t,n,num=1,i,j; memset(prime, 0, sizeof(prime)); memset(sum, 0, sizeof(sum)); for(i=3; i<N; i+=2) { if(prime[i] == 0) { for(j=i+i; j<N; j+=i) prime[j] = 1; } } for(i=3; i<=N; i+=2) { if(prime[i] == 0) { num++; sum[i]=num; } } cin>>t; while(t--) { cin>>n; if(n<2) cout<<sum[n]; else { if(sum[n]==0) { while(sum[n]==0) { n--; } } cout<<sum[n]<<endl; } } return 0; }

你可能感兴趣的:(ZSCOJ-1133(又见素数))