Нахождение факториала из заданного натурального числа - 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. Ниже представлена расшифровка действий в виде списка:
i=2- инициализация переменнойiзначением 2, которая будет использоваться для проверки делителей числа n.n>1- условие циклаfor, которое проверяет, что число n больше 1.if (n%i)- проверка, является лиnделителемi. Если это так, то функция возвращаетfalse, так как факториал числа n не может быть вычислен.return false- если число n не является делителемi, то функция возвращаетfalse.n /= i- деление числа n наi, результат которого присваивается переменнойn.return true- если цикл завершается без возвратаfalse, то функция возвращаетtrue, что означает, что факториал числа n успешно вычислен. Таким образом, данный код реализует корректный алгоритм вычисления факториала числа n.