加法哈希 additive_hash

#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#include <stdint.h>

uint32_t additive_hash(char *key, uint32_t len, uint32_t prime)
{
  uint32_t hash, i;
  for (hash=len, i=0; i<len; ++i)
    hash += key[i];
  return (hash % prime);
}


int main(int argc, char **argv)
{
    char name[1024];
    int init =0;
    if(argc == 2) {
        init = atoi(argv[1]);
    }
    while(gets(name)>0){
        int len = strlen(name);
        printf("%u\n",additive_hash(name, len, 251));
    }
    return 0;
}

 251是小于255的素数。

posted @ 2010-12-24 18:07  napoleon_liu  阅读(471)  评论(0)    收藏  举报