root/include/linux/prime_numbers.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef __LINUX_PRIME_NUMBERS_H
   3 #define __LINUX_PRIME_NUMBERS_H
   4 
   5 #include <linux/types.h>
   6 
   7 bool is_prime_number(unsigned long x);
   8 unsigned long next_prime_number(unsigned long x);
   9 
  10 /**
  11  * for_each_prime_number - iterate over each prime upto a value
  12  * @prime: the current prime number in this iteration
  13  * @max: the upper limit
  14  *
  15  * Starting from the first prime number 2 iterate over each prime number up to
  16  * the @max value. On each iteration, @prime is set to the current prime number.
  17  * @max should be less than ULONG_MAX to ensure termination. To begin with
  18  * @prime set to 1 on the first iteration use for_each_prime_number_from()
  19  * instead.
  20  */
  21 #define for_each_prime_number(prime, max) \
  22         for_each_prime_number_from((prime), 2, (max))
  23 
  24 /**
  25  * for_each_prime_number_from - iterate over each prime upto a value
  26  * @prime: the current prime number in this iteration
  27  * @from: the initial value
  28  * @max: the upper limit
  29  *
  30  * Starting from @from iterate over each successive prime number up to the
  31  * @max value. On each iteration, @prime is set to the current prime number.
  32  * @max should be less than ULONG_MAX, and @from less than @max, to ensure
  33  * termination.
  34  */
  35 #define for_each_prime_number_from(prime, from, max) \
  36         for (prime = (from); prime <= (max); prime = next_prime_number(prime))
  37 
  38 #endif /* !__LINUX_PRIME_NUMBERS_H */

/* [<][>][^][v][top][bottom][index][help] */