题目大意:
和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;
}