Я хочу вычислить gcd двух чисел m и n путем простой факторизации и использования общих факторов, подобных этому.Возьмем пример: m = 36 n = 48
vector<int> factors1 = prime_factorization(m); // 2 2 3 3
vector<int> factors2 = prime_factorization(n); // 2 2 2 2 3
vector<int> intersection(10);
set_intersection(factors1.begin(), factors1.end(), factors2.begin(), factors2.end(), intersection.begin());
пересечение теперь 2 2 3 0 0 0 0 0 0 0. Для этого я должен заранее установить размер вектора.Кроме того, остальные элементы установлены на 0. Я не хочу, чтобы это произошло.
Есть ли лучший способ сделать это?Используя множества или что-нибудь еще?
Кроме того, как рассчитать произведение элементов в векторном пересечении (2 * 2 * 3), используя stl, игнорируя нули?