Advertisement
mfgnik

Untitled

Nov 15th, 2020
742
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1. #include <iostream>
  2. #include <optional>
  3. #include <vector>
  4.  
  5. std::optional<std::vector<int>> k_factorize(int number, int k) {
  6.     int divisor = 2;
  7.     std::vector<int> factorization;
  8.     while (divisor * divisor <= number && factorization.size() + 1 < k) {
  9.         if (number % divisor == 0) {
  10.             number /= divisor;
  11.             factorization.push_back(divisor);
  12.         } else {
  13.             divisor += 1;
  14.         }
  15.         if (number == 1) {
  16.             return std::nullopt;
  17.         }
  18.     }
  19.     factorization.push_back(number);
  20.     if (factorization.size() == k) {
  21.         return factorization;
  22.     }
  23.     return std::nullopt;
  24. }
  25.  
  26. int main() {
  27.     int number, k;
  28.     std::cin >> number >> k;
  29.     auto factorization = k_factorize(number, k);
  30.     if (factorization) {
  31.         for (auto factor: factorization.value()) {
  32.             std::cout << factor << " ";
  33.         }
  34.     } else {
  35.         std::cout << -1;
  36.     }
  37.     return 0;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement