Нахождение факториала из заданного натурального числа - C (СИ)

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

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

Здравствуйте! Возникла проблема с написанием кода в задаче. Задача - Дано натуральное число "N". Определить, является ли оно факториалом какого-либо числа и если да, то выдать это число. Видел решение этой задачи, но только на Паскале. Проблема в том, что я не могу разобраться, как правильно осуществить вывод числа из цикла. Допустим я ввёл число 24, тогда он выдаёт, что это факториал числа 4. Но если я ввожу число 26, он выдаёт тоже самое. Собственно, вот код
#include<stdio.h>
#include<conio.h>
 
int main()
{
    printf("Enter the number -> ");
    int x;
    int n=2; //на меньшее делить нет смысла
    scanf("%i",&x);
 
    do
    {
        x=x/n;
        n++;
    }
    while(x/n!=1);
 
printf("Your number is factorial of the %i",x);
 
getch();
return 0;
}

Решение задачи: «Нахождение факториала из заданного натурального числа»

textual
Листинг программы
  
for(i=2; n>1; i++) {
  if (n%i) return false;
  n /= i;
}
return true;

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

В представленном коде реализуется вычисление факториала числа n. Ниже представлена расшифровка действий в виде списка:

  1. i=2 - инициализация переменной i значением 2, которая будет использоваться для проверки делителей числа n.
  2. n>1 - условие цикла for, которое проверяет, что число n больше 1.
  3. if (n%i) - проверка, является ли n делителем i. Если это так, то функция возвращает false, так как факториал числа n не может быть вычислен.
  4. return false - если число n не является делителем i, то функция возвращает false.
  5. n /= i - деление числа n на i, результат которого присваивается переменной n.
  6. return true - если цикл завершается без возврата false, то функция возвращает true, что означает, что факториал числа n успешно вычислен. Таким образом, данный код реализует корректный алгоритм вычисления факториала числа n.

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


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

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

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