view src/lib/primes.c @ 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 3b1985cbc908
children 31e87bda1362
line wrap: on
line source

/* 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 Library 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
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */

/*
 * Modified by the GLib Team and others 1997-1999.  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/. 
 */

#include "lib.h"
#include "primes.h"

static const unsigned int 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
};

static const unsigned int primes_count = sizeof(primes) / sizeof(primes[0]);

unsigned int primes_closest(unsigned int num)
{
	unsigned int i;

	for (i = 0; i < primes_count; i++)
		if (primes[i] >= num)
			return primes[i];

	return primes[primes_count - 1];
}