#pragma once #include #include // Находит все простые множители заданного числа. // Простое число - это число > 1, которое делится на 1 и на само себя. namespace alg { inline std::vector prime_factors_v1(int a) { std::vector result; int i = 2; while (i < a) { while (a%i == 0) { result.push_back(i); a /= i; } ++i; } if (a > 1) result.push_back(a); return result; } inline std::vector prime_factors_v2(int a) { std::vector result; while(a%2 == 0) { result.push_back(2); a = a/2; } int i = 3; int max_faxtor = std::sqrt(a); while (i <= max_faxtor) { while (a%i == 0) { result.push_back(i); a /= i; max_faxtor = std::sqrt(a); } i += 2; } if (a > 1) result.push_back(a); return result; } }