|
常用链接
留言簿(4)
随笔分类
随笔档案
搜索
最新评论

阅读排行榜
评论排行榜
Powered by: 博客园
模板提供:沪江博客
|
|
|
|
|
发新文章 |
|
|
妈的,没见过那么恶心的题目。。。 首先题目就错了,1不是质数啊!!! 输出之间居然还有一空行。。。 检查了半天都没查出来,杀人了!!! 懒得改了,用了同学的
#include <iostream>
#include <vector>
#include <string>
#include <math.h>
#include <iomanip>
#include <stdlib.h>
using namespace std;

#include"stdio.h"
#include"math.h"
int p[2001];

int main()
  {
int n,c,n1;
int i,j;
int tol;
int flag;
while(scanf("%d%d",&n,&c)!=-1)
 {


p[1]=1;
tol=1;
for(i=2;i<=3000;i++)
 {
flag=1;
for(j=2;j<=(int)sqrt((double)i);j++)
 {
 if(i%j==0) {flag=0;break;}
}
if(flag==0)continue;
else if(i>n)break;
else
 {
tol++;
p[tol]=i;

}

}


//此时质数的个数是tol,第一个质数是1
printf("%d %d:",n,c);
if(tol%2==0&&tol>=c*2)
 {
for(i=1;i<=c*2;i++)
 {
j=(tol-c*2)/2;
printf(" %d",p[j+i]);

}
printf("\n\n");
}

if(tol%2==0&&tol<c*2)
 {
for(j=1;j<=tol;j++)
printf(" %d",p[j]);
printf("\n\n");
}

if(tol%2==1&&tol>=c*2-1)
 {
for(i=1;i<=c*2-1;i++)
 {
j=(tol-c*2+1)/2;
printf(" %d",p[i+j]);
}
printf("\n\n");
}

if(tol%2==1&&tol<c*2-1)
 {
for(j=1;j<=tol;j++)
 {
printf(" %d",p[j]);
}
printf("\n\n");
}



}
}
|
|