Divisors#3259

Divisors (Editorial)

Перебираем натуральные числа x = 1, 2, 3, ... . Для каждого считаем количество его делителей. Как только найдено число, у которого количество делителей равно , выводим его и завершаем работу.

Такое решение укладывается в ограничение по времени, так как значение не велико. Например, для n = 16 ответ равен .

Реализация алгоритма

Функция Divisors подсчитывает количество делителей числа с помощью простого перебора всех возможных делителей от до .

int Divisors(int n)
{
  int res = 0, i;
  for (i = 1; i <= n; i++)
    if (n % i == 0) res++;
  return res;
}

Основная часть программы. Читаем входное значение — требуемое количество делителей.

scanf("%d",&n);

Последовательно перебираем натуральные числа i = 1, 2, 3, ... и для каждого из них вычисляем количество делителей. Как только находится число , у которого ровно делителей, цикл прекращается.

for (i = 1; ; i++)
{
  d = Divisors(i);
  if (d == n) break;
}

Выводим ответ.

printf("%d\n",i);