nest-open-source / nest-cam / 4320010 / glib / f6dccbe12024995c576bb85b2ad596af2833d2bd / . / glib / glib / gprimes.c

/* GLIB - Library of useful routines for C programming | |

* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald | |

* | |

* This library is free software; you can redistribute it and/or | |

* modify it under the terms of the GNU Lesser General Public | |

* License as published by the Free Software Foundation; either | |

* version 2 of the License, or (at your option) any later version. | |

* | |

* This library is distributed in the hope that it will be useful, | |

* but WITHOUT ANY WARRANTY; without even the implied warranty of | |

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |

* Lesser General Public License for more details. | |

* | |

* You should have received a copy of the GNU Lesser General Public | |

* License along with this library; if not, see <http://www.gnu.org/licenses/>. | |

*/ | |

/* | |

* Modified by the GLib Team and others 1997-2000. See the AUTHORS | |

* file for a list of people on the GLib Team. See the ChangeLog | |

* files for a list of changes. These files are distributed with | |

* GLib at ftp://ftp.gtk.org/pub/gtk/. | |

*/ | |

/* | |

* MT safe | |

*/ | |

#include "config.h" | |

#include "gprimes.h" | |

static const guint g_primes[] = | |

{ | |

11, | |

19, | |

37, | |

73, | |

109, | |

163, | |

251, | |

367, | |

557, | |

823, | |

1237, | |

1861, | |

2777, | |

4177, | |

6247, | |

9371, | |

14057, | |

21089, | |

31627, | |

47431, | |

71143, | |

106721, | |

160073, | |

240101, | |

360163, | |

540217, | |

810343, | |

1215497, | |

1823231, | |

2734867, | |

4102283, | |

6153409, | |

9230113, | |

13845163, | |

}; | |

/** | |

* g_spaced_primes_closest: | |

* @num: a #guint | |

* | |

* Gets the smallest prime number from a built-in array of primes which | |

* is larger than @num. This is used within GLib to calculate the optimum | |

* size of a #GHashTable. | |

* | |

* The built-in array of primes ranges from 11 to 13845163 such that | |

* each prime is approximately 1.5-2 times the previous prime. | |

* | |

* Returns: the smallest prime number from a built-in array of primes | |

* which is larger than @num | |

*/ | |

guint | |

g_spaced_primes_closest (guint num) | |

{ | |

gint i; | |

for (i = 0; i < G_N_ELEMENTS (g_primes); i++) | |

if (g_primes[i] > num) | |

return g_primes[i]; | |

return g_primes[G_N_ELEMENTS (g_primes) - 1]; | |

} |