Программа C++ нахождение минимального числа с К количеством разложений на множители

Задача: Какое наименьшее число n можно представить в виде произведения n = a∙b ровно k способами? Произведения a∙b и b∙a считаются одним способом, все числа натуральные (1 ≤ k ≤ 50).
Лимит времени: 1 сек.

Задача была предложена https://toster.ru/q/252968 (проверку на правильное нахождение чисел не прошла, сообщите ваши варианты алгоритма в комментариях)

На скриншоте - результат работы программы для к=50 : время выполнения 0,29 сек. Иногда показывает 0,38сек, чаще около 0.12.
min number deconstruct

  1. #include <iostream>
  2. using namespace std;
  3. int demin (int k);
  4. int main ()
  5. {
  6. int k;
  7. cout << "Программа Минимальное число с K вариантами разложений на множители a*b\n";
  8. cout << "Множители - различные числа, не могут повторяться, то есть a*b, c*d, e*f \n\n";
  9. cout << "Введите количество разложений числа на множители, k: ";
  10. cin >> k;
  11. //k=50;
  12. cout << "Минимальное число : " << demin(k) << endl;
  13. return 0;
  14. }
  15.  
  16. int demin (int k)
  17. {
  18. int qnty_deconst=1, mnoji=2, num=k*k;
  19. if (k == 1) return 2;
  20. while(1) {
  21. if (num % mnoji == 0) {
  22. qnty_deconst++;
  23. if (qnty_deconst == k) return num;
  24. }
  25. mnoji++;
  26. if ((mnoji*mnoji) >= num ) {
  27. num++;
  28. mnoji = 2;
  29. qnty_deconst = 1;
  30. }
  31. }
  32. }