POJ 1595 素数切
来源:互联网 发布:如何让皮肤变好 知乎 编辑:程序博客网 时间:2024/04/30 01:02
题目没什么,1A过,关键要把弄懂题意,英文差的孩子是伤不起额...
题意:给定你一个数n,让你求出1-n内有多少个素数,再给你一个数d,如果2*d大于素数的个数则全部输出;
否则,如果个数为单数,输出2*d - 1个并且以中间那个素数为中心分别向两边输出d-1个;
如果偶数个,输出2*d个,也是以中间那个素数为中心向两边扩展;
#include<iostream>
#include<cstdio>
using namespace std;
#define manx 10000
bool s[manx];
int num,p[manx],x[manx]; /// x[i] 是用来记录当前1 ~ i包括1在内的质数的个数,可以打印看看..
void prime(){
memset(s,0,sizeof(s));
memset(x,0,sizeof(x));
for(int i=2;i*i<=manx;i++){
if(!s[i]){
for(int j=2;j*i<manx;j++){
s[i*j]=1;
}
}
}
p[0]=1; num=1; x[1]=1;
for(int i=2;i<manx;i++){
if(!s[i]){
p[num++]=i;
x[i]=x[i-1]+1;
continue;
}
x[i]=x[i-1];
}
}
int main(){
int n,c;
prime();
while(cin>>n>>c){
int d=c*2;
printf("%d %d:",n,c);
if(d>=x[n]){
for(int i=0;i<x[n];i++)
printf(" %d",p[i]);
}
else {
if(x[n]%2==0){
for(int i=(x[n]-d)/2;i<x[n]-(x[n]-d)/2;i++)
printf(" %d",p[i]);
}
else{
for(int i=(x[n]-d+1)/2; i<x[n]-(x[n]-d+1)/2 ;i++){
printf(" %d",p[i]);
}
}
}
printf("\n\n");
}
}
- POJ 1595 素数切
- POJ 1595 Prime Cuts(素数切)
- POJ 1595 素数打表水题
- POJ 1595 素数筛法
- POJ 1595 素数的筛选输出问题
- poj 1595 Prime Cuts(素数问题)
- POJ 2739 素数筛选
- POJ 2739 素数
- poj 2262 素数
- poj 2635 高精度+素数
- poj 1411 素数 水题
- POJ 2689 筛素数
- poj 1411 筛素数
- poj 1411 素数筛选
- POJ 回文素数
- POJ 1365 素数筛
- poj-2689素数筛选
- POJ 2689 区间素数
- 使用SiteScope监控Tomcat
- JS生成随机字符
- linux下安装mysql-python笔记
- 数据库连接池
- Nginx 变量漫谈(四)
- POJ 1595 素数切
- 复合LOV的实现
- BlueTooth的EDR是什么
- 关键路径的实现C++ 代码
- Nginx 变量漫谈(五)
- 中国地质大学24岁硕士可可西里科考时遇难
- java_IO流(黑马程序员)
- 数组的应用大折腾
- Nginx 变量漫谈(六)