poj1595 水题

 题意:输入n, 和c
 统计1 - n 有多少个素数为cnt
 若 2*c > cnt 则将素数全部输出
 否则分支判断:
  若cnt 为偶数,则从中心开始输出2*c 个
  若cnt 为奇数,则从中心开始输出2*c-1个

 

 1 /*
 2     题意:输入n, 和c 
 3     统计1 - n 有多少个素数为cnt
 4     若 2*c > cnt 则将素数全部输出
 5     否则分支判断:
 6         若cnt 为偶数,则从中心开始输出2*c 个
 7         若cnt 为奇数,则从中心开始输出2*c-1个
 8 */
 9 #include <iostream>
10 using namespace std;
11 bool prm[1005];    //全局为false
12 void Prime()
13 {
14     int i, t;
15     prm[1] = false;
16     for (i=2; i<1005; i++)
17     {
18         if (!prm[i])
19         {
20             t = i<<1;
21             while (t<1005)
22             {
23                 prm[t] = true;
24                 t+= i;
25             }
26         }
27     }
28 }
29 int main()
30 {
31     int n, c, i, j, cnt;
32     Prime();
33     while (cin>>n>>c)
34     {
35         cout<<n<<" "<<c<<":";
36         for (i=1, cnt=0; i<=n; i++)
37         {    
38             if (!prm[i])
39                 cnt++;
40         }
41         //for (i=1; i<=n; i++)
42         //        if (!prm[i])
43         //            cout<<i<<" ";
44         //    cout<<endl;
45         if (2*c > cnt)
46         {
47             for (i=1; i<=n; i++)
48                 if (!prm[i])
49                     cout<<" "<<i;
50             cout<<endl;
51             /*continue;*/
52         }
53         else
54         {
55             if (cnt % 2 == 0)
56             {
57                 for (j=1, i=1; j<(cnt-2*c)/2+1;i++)
58                 {
59                     if (!prm[i])
60                         j++;
61                 }
62                 for (j=0; j<2*c; i++)
63                     if (!prm[i])
64                     {
65                         j++;
66                         cout<<" "<<i;
67                     }
68                 cout<<endl;
69             }
70             else
71             {
72                 for (j=1, i=1; j<(cnt-2*c+1)/2+1;i++)
73                 {
74                     if (!prm[i])
75                         j++;
76                 }
77                 for (j=1; j<2*c; i++)
78                     if (!prm[i])
79                     {
80                         j++;
81                         cout<<" "<<i;
82                     }
83                 cout<<endl;
84             }
85         }
86         cout<<endl;
87     }
88     return 0;
89 }
View Code

 

转载于:https://www.cnblogs.com/lv-2012/p/3208607.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值