Проверить, является ли введённое число факториалом какого-нибудь числа - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите написать программу, которая проверяет является ли введенное число факториалом какого-нибудь числа (на Си). Если не сложно, напишите с пояснениями. У меня никак не получается, а разобраться хочется. P.S.-Если сможете, то ещё отдельно нужно рекурсивным методом. Заранее огромнейшее спасибо!

Решение задачи: «Проверить, является ли введённое число факториалом какого-нибудь числа»

textual
Листинг программы
#include <stdio.h>
 
unsigned is_factorial_of(unsigned x)
{
  unsigned divisor;    
    
  for (divisor = 1; divisor < x; x /= divisor++)
    if (x % divisor != 0)
      return -1;
  
  return x == divisor ? divisor : -1;
}
 
int main() 
{
  for (unsigned i = 0; i < 10000000; ++i)
  {
    unsigned of = is_factorial_of(i);
    if (of != -1)
      printf("%u = %u!\n", i, of);
  }
}

Объяснение кода листинга программы

  1. Включаем стандартную библиотеку в код.
  2. Определяем функцию is_factorial_of(x), которая проверяет является ли число x факториалом какого-нибудь числа.
  3. Объявляем переменную divisor, которая будет являться делителем в цикле.
  4. Запускаем цикл от 1 до x, который будет проверять число на делимость.
  5. Если число делится без остатка на текущий делитель, то возвращаем -1.
  6. Если число не делится без остатка на текущий делитель, то продолжаем поиск делителя.
  7. Если число равно текущему делителю, то возвращаем текущий делитель.
  8. Если число не равно текущему делителю, то возвращаем -1.
  9. Запускаем цикл в функции main() от 0 до 10000000.
  10. Для каждого числа i в диапазоне вызываем функцию is_factorial_of(i).
  11. Если функция вернула не -1, то выводим число i и его факториал на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы