poj1595

来源:互联网 发布:淘宝详情页ps技巧 编辑:程序博客网 时间:2024/06/05 07:18

题目大意:

和zoj1312是同一道题。给一个整数N,算出1到N有多少个素数,然后给一个C,从这些素数中间位置开始,输出C*2或(C*2)-1个素数

解题思路:

代码如下:

#include<stdio.h>#include<stdlib.h>int prime(int n){  int i;  for(i=2;i*i<=n;i++)  {    if(n%i==0)    {      return 0;    }  }  return 1;}int main(){  int n,c,i,j,m;  int num[1010];  while(scanf("%d%d",&n,&c)!=EOF)  {    memset(num,0,sizeof(num));    num[1]=1;    j=2;    for(i=2;i<=n;i++)    {      if(prime(i))      {        num[j++]=i;      }    }    printf("%d %d:",n,c);    m=j-1;    if(m%2==0)    {      if(c*2>=m)      {        for(i=1;i<=m;i++)        {          printf(" %d",num[i]);        }        printf("\n\n");      }      else      {        for(i=m/2-c+1;i<=m/2+c;i++)        {          printf(" %d",num[i]);        }        printf("\n\n");      }    }    else    {      if(2*c-1>=m)      {        for(i=1;i<=m;i++)        {          printf(" %d",num[i]);        }        printf("\n\n");      }      else      {        for(i=m/2-c+2;i<=m/2+c;i++)        {          printf(" %d",num[i]);        }        printf("\n\n");      }    }  }  return 0;}
0 0
原创粉丝点击