码迷,mamicode.com
首页 > 其他好文 > 详细

BestCoder#51

时间:2015-08-16 18:02:17      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
 1 #include <cstdio>
 2 #include <iostream>
 3 #include <cmath>
 4 #include <cstring>
 5 using namespace std;
 6 bool visit[10100000];
 7 int prime[10000000];
 8 
 9 
10 void init_prim()
11 {
12     memset(visit, true, sizeof(visit));
13     int num = 0;
14     for (int i = 2; i <= 10000000; ++i)
15     {
16         if (visit[i] == true)
17         {
18             num++;
19             prime[num] = i;
20         }
21         for (int j = 1; ((j <= num) && (i * prime[j] <= 10000000));  ++j)
22         {
23             visit[i * prime[j]] = false;
24             if (i % prime[j] == 0) break; 
25         }
26     }
27 }
28 int main() {
29     memset(prime, 0, sizeof(prime));
30     int T, n;
31     init_prim();
32     scanf("%d", &T);
33     while(T--) {
34         scanf("%d", &n);
35         bool flag = true;
36         if(n < 1e6) {
37             if(n == 4) {
38                 printf("%d\n", 2);
39             } else if(visit[n] == true){
40                 printf("%d\n", n-1);
41             } else {
42                 printf("%d\n", 0);
43             }
44         } else {
45             for(int i = 1; prime[i] <= sqrt(n); ++i) {
46                 if(n % prime[i] == 0) {
47                     flag = false;
48                     printf("%d\n", 0);
49                     break;
50                 }
51             }
52             if(flag) {
53                 printf("%d\n", n-1);
54             }
55         }
56     }
57     return 0;
58 }
第一题

 

BestCoder#51

标签:

原文地址:http://www.cnblogs.com/ya-cpp/p/4734571.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!