We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 905c19a commit 6c49d53Copy full SHA for 6c49d53
1 file changed
src/alfred/math/utils.hpp
@@ -74,6 +74,23 @@ std::pair<std::vector<int>, std::vector<int>> euler_sieve(int n) {
74
return std::make_pair(primes, minp);
75
}
76
77
+template <class T>
78
+std::vector<std::pair<T, int>> factorize(T n) { // O(sqrt(n)) factorization.
79
+ std::vector<std::pair<T, int>> vec;
80
+ for (T i = 2; i * i <= n; i++) {
81
+ int cnt = 0;
82
+ if (n % i != 0) continue;
83
+ while (n % i == 0) {
84
+ n /= i, cnt++;
85
+ }
86
+ vec.push_back({i, cnt});
87
88
+ if (n != 1) {
89
+ vec.push_back({n, 1});
90
91
+ return vec;
92
+}
93
+
94
template <class T>
95
inline T ceilDiv(T n, T m) {
96
if (m < 0) m = -m, n = -n;
0 commit comments