Workshop o mikrokontrolérech na SKSP 2024.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.5 KiB

3 months ago
/*
* The UCW Library -- Prime numbers
*
* (c) 2008 Michal Vaner <vorner@ucw.cz>
*
* Code taken from ucw/lib.h by:
*
* (c) 1997--2008 Martin Mares <mj@ucw.cz>
* (c) 2005 Tomas Valla <tom@ucw.cz>
* (c) 2006 Robert Spalek <robert@ucw.cz>
* (c) 2007 Pavel Charvat <pchar@ucw.cz>
*
* This software may be freely distributed and used according to the terms
* of the GNU Lesser General Public License.
*/
#ifndef _UCW_PRIME_H
#define _UCW_PRIME_H
#include <ucw/lib.h>
#ifdef CONFIG_UCW_CLEAN_ABI
#define isprime ucw_isprime
#define next_table_prime ucw_next_table_prime
#define nextprime ucw_nextprime
#define prev_table_prime ucw_prev_table_prime
#endif
/* prime.c */
/**
* Return a non-zero value iff @x is a prime number.
* The time complexity is `O(sqrt(x))`.
**/
int isprime(uint x);
/**
* Return some prime greater than @x. The function does not checks overflows, but it should
* be safe at least for @x lower than `1U << 31`.
* If the Cramer's conjecture is true, it should have complexity `O(sqrt(x) * log(x)^2)`.
**/
uint nextprime(uint x);
/* primetable.c */
/**
* Quickly lookup a precomputed table to return a prime number greater than @x.
* Returns zero if there is no such prime (we guarantee the existance of at
* least one prime greater than `1U << 31` in the table).
**/
uint next_table_prime(uint x);
/**
* Quickly lookup a precomputed table to return a prime number smaller than @x.
* Returns zero if @x is smaller than `7`.
**/
uint prev_table_prime(uint x);
#endif // _UCW_PRIME_H