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

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

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

Уже второй раз пишу, т.к. мне правильно ещё никто не помог Нужно написать программу, которая проверяет, является ли введенное пользователем число факториалом какого-нибудь числа. И если да, то программа должна вывести это число. Т.е. если пользователь ввел "720", то программа должна вывести "6". (Ещё, если сможете, нужна та же программа, только рекурсивным методом) Заранее благодарю!

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

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    unsigned int n, fact = 1;
    int i;
    puts("Enter number:");
    while(!scanf("%u", &n) && getchar())
        puts("Error input!Try again.");
    for(i = 1; ; i++){
        fact *= i;
        if(fact >= n)
            break;
    }
    if(fact == n)
        printf("%u is factorial %d\n", n, i);
    else
        puts("No");
    return 0;
}

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

В этом коде:

  1. Объявлены переменные:
    • n - число, введенное пользователем
    • fact - факториал числа
    • i - счётчик цикла
  2. Выводится сообщение Enter number: для того, чтобы пользователь ввёл число.
  3. Используется цикл while для проверки корректности ввода числа. Он будет выполняться до тех пор, пока пользователь не введет корректное число или не отправит сигнал конца файла.
  4. Используется цикл for для вычисления факториала числа. Он будет выполняться до тех пор, пока факториал числа fact меньше или равен числу n.
  5. Факториал числа fact вычисляется путем умножения всех целых чисел от 1 до i.
  6. Если fact равно n, то выводится сообщение, содержащее число n и его факториал i.
  7. Если fact не равно n, то выводится сообщение No.
  8. Код завершается возвратом 0, что означает успешное выполнение программы.

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

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