码迷,mamicode.com
首页 > 其他好文 > 详细

基础实验5-2.1 整型关键字的平方探测法散列 (25分)

时间:2020-03-06 21:49:41      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:false   lse   mem   prim   mic   sqrt   printf   ems   style   

技术图片

 

 

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <malloc.h>
typedef enum {false,true
             } bool;

bool IsPrime(int n) {
    if(n==0||n==1)
        return false;
    if(n>2) {
        int i;
        for(i=2; i<=sqrt(n)+1; i++) {
            if(n%i==0)return false;
        }
    }
    return true;
}
int NextPrime(int n) {
    int i=n+1;
    while(1) {
        if(IsPrime(i))
            return i;
        i++;
    }
    return i;
}
int main() {
    int m,n;
    scanf("%d %d",&m,&n);
    if(!IsPrime(m))
        m=NextPrime(m);
    int H[m];
    memset(H,0,sizeof(H));
    int a[n];
    int i,x;
    for(i=0; i<n; i++) {
        scanf("%d",&x);
        int key=x%m;
        int d,tmp=key;
        for(d=0; d<m; d++) {
            key=tmp+d*d;
            if(!H[key%m]) {
                H[key%m]=1;
                a[i]=key%m;
                break;
            }
        }
        if(d==m)
        {
            a[i]=-1;
        }
    }
    for(i=0; i<n; i++) {
        if(i)
            printf(" ");
        if(a[i]==-1)
            printf("-");
        else
            printf("%d",a[i]);
    }
    return 0;
}

 

基础实验5-2.1 整型关键字的平方探测法散列 (25分)

标签:false   lse   mem   prim   mic   sqrt   printf   ems   style   

原文地址:https://www.cnblogs.com/snzhong/p/12430927.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!