Нахождение факториала из заданного натурального числа - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д