X-man

导航

hdu 1319 Prime Cuts

#include<stdio.h>
#include<string.h>
#include<vector>
#include<algorithm>
using namespace std;
const int N=1010;
bool visit[N];
vector<int>prime;
int init_prim()
{
    memset(visit,true,sizeof(visit));
    int num=0;
    prime.push_back(1);
    for(int i=2; i<=N; i++)
    {
        if(visit[i]==true)
        {
            num++;
            prime.push_back(i);//从下标1开始存数
        }
        for(int j=1; (j<=num)&&(i*prime[j]<=N); j++)
        {
            visit[i*prime[j]]=false;
            if(i%prime[j]==0)break;
        }
    }
    return 0;
}

int main()
{
    int js,n,c,m;
    init_prim();
    while(scanf("%d %d",&n,&c)!=EOF)
    {
        js=0;
        for(int i=0;i<prime.size();i++)
        {
            if(prime[i]<=n)js++;
            else break;
        }
        //printf("%d\n\n",js);
        printf("%d %d:",n,c);
        //if(js<=)
        if(js&1)
        {
            if(js<=2*c-1)
            {
                for(int i=0;i<js;i++)
                printf(" %d",prime[i]);
            }
            else
            {
                js/=2;
                for(int i=js-c+1;i<js+c;i++)
                printf(" %d",prime[i]);
            }

        }
        else
        {
            if(js<=2*c)
            {
                for(int i=0;i<js;i++)
                printf(" %d",prime[i]);
            }
            else
            {
                js/=2;
                for(int i=js-c;i<js+c;i++)
                printf(" %d",prime[i]);
            }
        }
        printf("\n\n");
    }
    return 0;
}

难点是格式的输出:

注意此题中1也是素数;

posted on 2013-05-20 20:56  雨钝风轻  阅读(242)  评论(0编辑  收藏  举报