changeset 44:e399e33d033d HEAD

Changed behaviour of primes_closest() to return given number back if it's a prime itself.
author Timo Sirainen <tss@iki.fi>
date Tue, 27 Aug 2002 05:28:16 +0300
parents 526284657da7
children d8ff9a34ed03
files src/lib/hash.c src/lib/primes.c src/lib/primes.h
diffstat 3 files changed, 4 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/hash.c	Tue Aug 27 05:27:05 2002 +0300
+++ b/src/lib/hash.c	Tue Aug 27 05:28:16 2002 +0300
@@ -314,7 +314,7 @@
 	    (nodes_per_list < 3.0 || table->size >= HASH_TABLE_MAX_SIZE))
 		return FALSE;
 
-	new_size = CLAMP(primes_closest(table->nodes_count),
+	new_size = CLAMP(primes_closest(table->nodes_count+1),
 			 HASH_TABLE_MIN_SIZE,
 			 HASH_TABLE_MAX_SIZE);
 
--- a/src/lib/primes.c	Tue Aug 27 05:27:05 2002 +0300
+++ b/src/lib/primes.c	Tue Aug 27 05:28:16 2002 +0300
@@ -72,7 +72,7 @@
 	unsigned int i;
 
 	for (i = 0; i < primes_count; i++)
-		if (primes[i] > num)
+		if (primes[i] >= num)
 			return primes[i];
 
 	return primes[primes_count - 1];
--- a/src/lib/primes.h	Tue Aug 27 05:27:05 2002 +0300
+++ b/src/lib/primes.h	Tue Aug 27 05:28:16 2002 +0300
@@ -1,6 +1,8 @@
 #ifndef __PRIMES_H
 #define __PRIMES_H
 
+/* Returns a prime close to specified number, or the number itself if it's
+   a prime. Note that the returned value may be smaller than requested! */
 unsigned int primes_closest(unsigned int num);
 
 #endif