qxLib
prime.h
Go to the documentation of this file.
1 /**
2 
3  @file prime.h
4  @author Khrapov
5  @date 6.08.2022
6  @copyright (c) Nick Khrapov, 2022. All right reserved.
7 
8 **/
9 #pragma once
10 
11 #include <cmath>
12 #include <random>
13 #include <vector>
14 
15 namespace qx
16 {
17 
18 /**
19  @brief Find all prime factors
20  @complexity O(sqrt(number))
21  @tparam I - Integral type
22  @param nValue - number for search
23  @retval - all prime factors vector
24 **/
25 template<class I>
26 inline std::vector<I> find_prime_factors(I nValue);
27 
28 /**
29  @brief Find all primes between 2 and nMaxNumber
30  @details Sieve of Eratosthenes
31  @complexity O(nMaxNumber * log(log(number)))
32  @tparam I - Integral type
33  @param nMaxNumber - max number for search
34  @retval - all primes vector
35 **/
36 template<class I>
37 inline std::vector<I> find_primes(I nMaxNumber);
38 
39 /**
40  @brief Is number prime
41  @details 1.0 probability, high computational complexity
42  @complexity O(sqrt(number))
43  @param nValue - number
44  @retval - true if prime
45 **/
46 inline bool is_prime(size_t nValue);
47 
48 /**
49  @brief Is number prime with some probability
50  @param nValue - number
51  @param fProbability - probability (0, 1]
52  @retval - true is number is prime with some probability
53 **/
54 inline bool is_prime(size_t nValue, double fProbability);
55 
56 } // namespace qx
57 
58 #include <qx/math/prime.inl>
std::vector< I > find_primes(I nMaxNumber)
Find all primes between 2 and nMaxNumber.
Definition: prime.inl:102
bool is_prime(size_t nValue)
Is number prime.
Definition: prime.inl:140
std::vector< I > find_prime_factors(I nValue)
Find all prime factors.
Definition: prime.inl:52