CodeForces 385C 素数朴素筛法,穷尽数的素数因子

//CodeForces 385C 素数朴素筛法,穷尽数的素数因子

 1 #include "iostream"
 2 #include "cstdio"
 3 #include "cstring"
 4 #include "algorithm"
 5 using namespace std;
 6 const int maxn = 10000100;
 7 int tot, pr[maxn];
 8 bool is_pr[maxn];
 9 int n, m, l, r, cnt[maxn], sum[maxn];
10 
11 int main()
12 {
13     int i, j, ans;
14     scanf("%d", &n);
15     for(i = 1; i<=n; ++i) {
16         scanf("%d", &ans);
17         ++cnt[ans];
18     }
19 
20     memset(is_pr, 1, sizeof(is_pr));
21     for(i = 2; i < maxn; ++i) {
22         if(is_pr[i]) {
23             if(cnt[i])
24                 sum[i] += cnt[i];
25             for(j = (i<<1); j < maxn; j += i) {
26                 is_pr[j] = 0;
27                 if(cnt[j]) {
28                     sum[i] += cnt[j];
29                 }
30             }
31         }
32     }
33     for(i = 2; i < maxn; ++i)
34         sum[i] += sum[i-1];
35 
36     scanf("%d", &m);
37     while(m--) {
38         scanf("%d%d", &l, &r);
39         l = min(l, maxn - 1);
40         r = min(r, maxn - 1);
41         printf("%d\n", sum[r] - sum[l - 1]);
42     }
43 }

 

posted @ 2015-02-12 18:49  AC_Phoenix  阅读(662)  评论(0编辑  收藏  举报