Можно ли представить факториал числа "n" в виде произведения трёх последовательных целых чисел? - C (СИ)
Формулировка задачи:
Помогите пожалуйста... Нужно решить через
операторы цикла
Дано натуральное число n . Выяснить, можно ли представить n!=1*2*3*...*n в виде произведения трёх последовательных целых чисел. Желательно с разъяснениями. Заранее благодарен. Байт мне уже помогал, спасибо ему, но реально, я там ничего не понял(Решение задачи: «Можно ли представить факториал числа "n" в виде произведения трёх последовательных целых чисел?»
textual
Листинг программы
#include <stdio.h> typedef unsigned long long number_t; #define NUM_PRESENT "%llu" number_t fact(number_t n) { return ( n > 1 ) ? n * fact(n - 1) : 1; } int main(void) { number_t n, a, b, c; while ( printf("Number: ") && scanf(NUM_PRESENT, &n) == 1 ) { n = fact(n); printf("Factorial: " NUM_PRESENT "\n", n); for ( a = 1, b = 2, c = 3; a * b * c < n; ++a, ++b, ++c ) ; if ( a * b * c > n ) printf("No way!\n"); else printf(NUM_PRESENT " X " NUM_PRESENT " X " NUM_PRESENT "\n", a, b, c); } return 0; }
Объяснение кода листинга программы
В этом коде:
- Факториал числа
n
вычисляется с помощью рекурсивной функцииfact
. - В функции
main
пользователю предлагается ввести числоn
. - Если число
n
больше 1, то вычисляется его факториал с помощью функцииfact
. - Затем в цикле перебираются три последовательных целых числа начиная с 1, 2 и 3 до тех пор, пока их произведение не станет равным или больше факториала
n
. - Если произведение трех последовательных целых чисел становится больше факториала
n
, то выводится сообщениеNo way!
. - В противном случае выводится сообщение с тремя последовательными целыми числами, чье произведение равно факториалу
n
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д