题目大意:
给一个整数N,算出1到N有多少个素数,然后给一个C,从这些素数中间位置开始,输出C*2或(C*2)-1个素数
解题思路:
无
代码如下:
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
int is_prime(int k)
{
int i;
for(i=2;i*i<=k;i++)
{
if(!(k%i))
{
return 0;
}
}
return 1;
}
int main()
{
int n,c;
int i;
int j;
int prime[500];
int mid;
while(scanf("%d%d",&n,&c)!=EOF)
{
memset(prime,0,sizeof(prime));
prime[1]=1;
j=2;
for(i=2;i<=n;i++)
{
if(is_prime(i))
{
prime[j]=i;
j++;
}
}
j--;
printf("%d %d:",n,c);
if(j%2)
{
if(c-1>=j/2)
{
for(i=1;i<=j;i++)
{
printf(" %d",prime[i]);
}
printf("\n");
}
else
{
mid=j/2+1;
for(i=mid-c+1;i<=mid+c-1;i++)
{
printf(" %d",prime[i]);
}
printf("\n");
}
}
else
{
if(c>=j/2)
{
for(i=1;i<=j;i++)
printf(" %d",prime[i]);
printf("\n");
}
else
{
for(i=j/2-c+1;i<=j/2+c;i++)
printf(" %d",prime[i]);
printf("\n");
}
}
printf("\n");
}
return 0;
}