Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 862 Accepted Submission(s): 452
1 #include<stdio.h> 2 #include<algorithm> 3 #include<iostream> 4 #include<string.h> 5 #include<queue> 6 #include<set> 7 #include<math.h> 8 using namespace std; 9 typedef long long LL; 10 bool prime[4000000]; 11 int sum[4000009]; 12 int main(void) 13 { 14 int n; 15 memset(prime,0,sizeof(prime)); 16 for(int i = 2; i < 3000; i++) 17 { 18 if(!prime[i]) 19 for(int j = i; (i*j) <=4000007 ; j++) 20 { 21 prime[i*j] = true; 22 } 23 } 24 memset(sum,0,sizeof(sum)); 25 for(int i = 1; i <= 1000000; i++) 26 { 27 if(!prime[3*i+7]) 28 sum[i] = sum[i-1] + 1; 29 else sum[i] = sum[i-1]; 30 } 31 scanf("%d",&n); 32 while(n--) 33 { 34 int ask ; 35 scanf("%d",&ask); 36 printf("%d\n",sum[ask]); 37 } 38 return 0; 39 }
原文:http://www.cnblogs.com/zzuli2sjy/p/5876723.html