12 if(num
== 1 || num
== 0) return 0;
13 for(i
= 2 ; i
<= num
/ 2; i
++)
14 if(num
% i
== 0) return 0;
18 int next_twinprime(int num
)
21 while(num
< INT_MAX
) {
23 if(is_prime(num
) && is_prime(num
-2))return num
;
28 Hash
hash_new(int len
)
33 h
.data
= malloc(sizeof(int)*len
);
37 Hash
hash_new_prime(int len
)
41 len
= next_twinprime(len
);
43 h
.data
= malloc(sizeof(int)*len
);
47 int hash_data(void *data
, int num
, size_t size
)
52 /* slot += (void *) (data) + (num * size); */
53 slot
+= (int)data
+ size
* num
;
59 int hash_insert(Hash h
, void * data
, size_t length
)
63 /*slot = hash_data(data, length);
64 if(h[slot]->data == NULL) *//* insert data in first node */;
69 void * hash_search(Hash h
, void * data
, size_t length
)
74 int hash_remove(Hash h
, void * data
, size_t length
)
80 int hash_empty(Hash h
)
90 void hash_clear(Hash h
)
95 void hash_print(Hash h
)
100 void hash_delete(Hash h
)