cleanup
[platform/upstream/glib.git] / glib / gprimes.c
1 /* GLIB - Library of useful routines for C programming
2  * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
16  */
17
18 /*
19  * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
20  * file for a list of people on the GLib Team.  See the ChangeLog
21  * files for a list of changes.  These files are distributed with
22  * GLib at ftp://ftp.gtk.org/pub/gtk/.
23  */
24
25 /*
26  * MT safe
27  */
28
29 #include "config.h"
30
31 #include "gprimes.h"
32
33
34 static const guint g_primes[] =
35 {
36   11,
37   19,
38   37,
39   73,
40   109,
41   163,
42   251,
43   367,
44   557,
45   823,
46   1237,
47   1861,
48   2777,
49   4177,
50   6247,
51   9371,
52   14057,
53   21089,
54   31627,
55   47431,
56   71143,
57   106721,
58   160073,
59   240101,
60   360163,
61   540217,
62   810343,
63   1215497,
64   1823231,
65   2734867,
66   4102283,
67   6153409,
68   9230113,
69   13845163,
70 };
71
72 /**
73  * g_spaced_primes_closest:
74  * @num: a #guint
75  *
76  * Gets the smallest prime number from a built-in array of primes which
77  * is larger than @num. This is used within GLib to calculate the optimum
78  * size of a #GHashTable.
79  *
80  * The built-in array of primes ranges from 11 to 13845163 such that
81  * each prime is approximately 1.5-2 times the previous prime.
82  *
83  * Returns: the smallest prime number from a built-in array of primes
84  *     which is larger than @num
85  */
86 guint
87 g_spaced_primes_closest (guint num)
88 {
89   gint i;
90
91   for (i = 0; i < G_N_ELEMENTS (g_primes); i++)
92     if (g_primes[i] > num)
93       return g_primes[i];
94
95   return g_primes[G_N_ELEMENTS (g_primes) - 1];
96 }