1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
use crateeratosthenes_sequence;
use BTreeMap;
/// Returns a vector of factor pairs of the given number `n`.
///
/// # Arguments
///
/// * `n` - A usize integer whose factor pairs are to be found.
///
/// # Returns
///
/// A vector of tuples where each tuple contains a pair of factors of `n`.
///
/// # Examples
///
/// ```
/// use numberlab::algorithm::factorize::factor_pairs;
///
/// let pairs = factor_pairs(28);
/// assert_eq!(pairs, vec![(1, 28), (2, 14), (4, 7)]);
/// ```
/// Returns a sorted vector of all factors of the given number `n`.
///
/// # Arguments
///
/// * `n` - A usize integer whose factors are to be found.
///
/// # Returns
///
/// A sorted vector of usize integers representing all factors of `n`.
///
/// # Examples
///
/// ```
/// use numberlab::algorithm::factorize::factors;
///
/// let factors = factors(28);
/// assert_eq!(factors, vec![1, 2, 4, 7, 14, 28]);
/// ```
/// Returns a vector of prime factors of the given number `n`.
///
/// # Arguments
///
/// * `n` - A usize integer whose prime factors are to be found.
///
/// # Returns
///
/// A vector of usize integers representing the prime factors of `n`.
///
/// # Examples
///
/// ```
/// use numberlab::algorithm::factorize::prime_factors;
///
/// let factors = prime_factors(28);
/// assert_eq!(factors, vec![2, 2, 7]);
/// ```
/// Returns a `BTreeMap` where the keys are the prime factors of the given number `n`
/// and the values are the exponents of those prime factors.
///
/// # Arguments
///
/// * `n` - A usize integer whose prime factors and their exponents are to be found.
///
/// # Returns
///
/// A `BTreeMap<usize, usize>` where each key is a prime factor of `n` and the corresponding
/// value is the exponent of that prime factor.
///
/// # Examples
///
/// ```
/// use numberlab::algorithm::factorize::prime_factors_exponent;
///
/// let exponents = prime_factors_exponent(28);
/// assert_eq!(exponents.get(&2), Some(&2));
/// assert_eq!(exponents.get(&7), Some(&1));
/// ```