3 /* ハッシュ表のサイズを決めるため、引数の数値より大きい最小の素数を返す */
4 int hashtabsize(int size)
8 {2, 3, 5, 7, 11, 13, 17, 19, 23, 29,
9 31, 37, 41, 43, 47, 53, 59, 61, 67,
10 71, 73, 79, 83, 89, 97,
12 for(i = 0; i < ARRAYSIZE(prime); i++) {
13 if(i > 0 && prime[i] >= size) {
21 unsigned hash(int keyc, HKEY *keyv[], int tabsize)
27 for(i = 0; i < keyc; i++) {
28 switch(keyv[i]->type) {
30 for(p = keyv[i]->val.s; *p != '\0'; p++) {
31 hashval = *p + 31 * hashval;
35 hashval = keyv[i]->val.i + 31 * hashval;
41 return (hashval % tabsize);