您的位置:首页 > 其它

sicily 1752 选择

2011-04-30 16:10 399 查看
最近一直都在做水题找自信中,嘿嘿....

// source code of submission 743067, Zhongshan University Online Judge System
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

int prime(int a[],int n)                     //筛法素数产生器
{
int i,j,k,x,num,*b;
n++;
n/=2;
b=(int *)malloc(sizeof(int)*(n+1)*2);
a[0]=2;a[1]=3;num=2;
for(i=1;i<=2*n;i++)
b[i]=0;
for(i=3;i<=n;i+=3)
for(j=0;j<2;j++)
{
x=2*(i+j)-1;
while(b[x]==0)
{
a[num++]=x;
for(k=x;k<=2*n;k+=x)
b[k]=1;
}
}
return num;
}
int binary_search(int a[],int n,int value)     //二分查找函数
{
int low = 0,high = n-1,mid;
while(low <= high)                         //注意这里不要写成low < high
{
mid = low +(high-low)/2;
if(a[mid] == value)
return mid;
if(a[mid] < value)
low = mid+1;
else
high = mid-1;
}
return -1;
}
int main()
{
int p[100000];
int n,i,w,res;
n = prime(p,1000000);
while(cin>>w,w!=-1)
{
res = binary_search(p,n,w);
cout<<res+1<<endl;                      //数组从0开始计数,故输出应为res+1
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: