入门篇(3)——数学问题(5.4素数)
1078 Hashing
我的代码(15/25)
#include<stdio.h>
int prime[10010]={};
int hsh[10010]={};
int main(){
prime[0]=-1;
prime[1]=-1;
for(int i=2;i<10010;i++){
if(prime[i]==0){
int temp=2*i;
while(temp<10010){
prime[temp]=-1;
temp+=i;
}
}
}
int msize,n;
int key;
scanf("%d%d",&msize,&n);
for(int i=msize;i<10001;i++){
if(prime[i]==0){
msize=i;
break;
}
}
for(int i=0;i<n;i++){
scanf("%d",&key);
int pos=key%msize;
if(hsh[pos]==0){
printf("%d",pos);
hsh[pos]=1;
}
else{
printf("-");
}
if(i<n-1){
printf(" ");
}
}
printf("\n");
}
notes
- 哈希的二次探测法是step=1,2,…;i=i+step*step;
- prime:素数