dsalgo/
number_of_divisors_from_prime_factorize_result_modular.rs1pub fn number_of_divisors(
2 modulus: usize,
3 factors: &[(usize, usize)],
4) -> usize {
5 let mut c = 1;
6
7 for (_, e) in factors.iter() {
8 c *= e + 1;
9
10 c %= modulus;
11 }
12
13 c
14}
15
16#[cfg(test)]
17
18mod tests {
19
20 use super::*;
21
22 #[test]
23
24 fn test() {
25 let m = 1_000_000_007;
26
27 let cases =
28 vec![(vec![(2, 2), (3, 1)], 6), (vec![(2, 1), (3, 1), (5, 1)], 8)];
29
30 for (factors, ans) in cases {
31 assert_eq!(number_of_divisors(m, &factors), ans);
32 }
33 }
34}