命令ハッシュ表周辺の調整
[YACASL2.git] / src / hash.c
index 54f38ab..f63b3f5 100644 (file)
@@ -1,5 +1,22 @@
 #include "hash.h"
 
+/* ハッシュ表のサイズを決めるため、引数の数値より大きい最小の素数を返す */
+int hashtabsize(int size)
+{
+    int i;
+    const int prime[] =
+        {2, 3, 5, 7, 11, 13, 17, 19, 23, 29,
+         31, 37, 41, 43, 47, 53, 59, 61, 67,
+         71, 73, 79, 83, 89, 97,
+        };
+    for(i = 0; i < ARRAYSIZE(prime); i++) {
+        if(i > 0 && prime[i] >= size) {
+            break;
+        }
+    }
+    return prime[i];
+}
+
 /* ハッシュ値を取得する */
 unsigned hash(int keyc, HKEY *keyv[], int tabsize)
 {