您的位置:首页 > 其它

POJ1595 Prime Cuts [暴力打表]

2012-03-13 13:05 381 查看
题意:

给定一个数字n,将1到n中的所有质数按照中心值为c的规定输出,具体规定题目写得很清楚。

思路:

简单的暴力打表题。

调智能车调得郁闷,找个水题A掉缓冲一下心情,所以这题就这么牺牲了。

#include<iostream>
#include<vector>
#include<string>
#include<queue>
#include<cmath>
#include<algorithm>
#define llong long long
#define Min(a,b) (a<b?a:b)
#define Max(a,b) (a>b?a:b)
#define Abs(a) ((a)>0?(a):-(a))
#define Mod(a,b) (((a)-1+(b))%(b)+1)
using namespace std;
int n,m;
const int N=1005;
const int inf=99999999;
int has
;//存储n值对应的prime下表
int prime
;//存储所有的质数
void solve()
{
int k=1;
prime[k++]=1;
has[1]=1;
for(int i=2;i<=N;i++)
{
bool flag=true;
for(int j=2;j<=sqrt(double(i+1));j++)
{
if(!(i%j))
{
flag=false;
break;
}
}
if(flag)
{
prime[k]=i;
k++;
}
has[i]=k-1;
}
}
int main()
{
solve();
while(scanf("%d%d",&n,&m)!=EOF)
{
printf("%d %d:",n,m);
int center=has
,l,r;
if(center%2==0)
{
center/=2;
l=center-m+1;r=center+m;
}
else
{
center=center/2+1;
l=center-m+1;r=center+m-1;
}
l=Max(l,1);
r=Min(r,has
);
for(int i=l;i<=r;i++)
{
printf(" %d",prime[i]);
}
printf("\n\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: