Составить программу определения такого наибольшего N,что N! < A - C (СИ)
Формулировка задачи:
Всем привет.Помогите,пожалуйста,написать к этой задаче код и блок-схему(первоочередно),буду очень признателен.
Дано натуральное число А.Составить программу определения такого наибольшего N,что N! < A (A>1)
Ребяяята,помогайте =С
Решение задачи: «Составить программу определения такого наибольшего N,что N! < A»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
// Факториал определён только для целых неотрицательных чисел.
// функция работает для небольших положительных целых чисел
long long factorial( int n ) {
long long result = 1;
int i;
for ( i = 2; i <= n; ++i )
result *= i;
return result;
}
int main( void ) {
int a;
while ( 1 ) {
printf( "Введите натуральное число A " );
scanf( "%d", &a );
if ( a <= 1 ) {
printf( "Неверный ввод!\n" );
continue;
}
break;
}
int n = 2;
while ( factorial( n++ ) < a )
;
printf( "Искомая величина N = %d", n - 2 );
return EXIT_SUCCESS;
}
Объяснение кода листинга программы
- В программе определена функция
factorial, которая вычисляет факториал числаn. - В функции
mainсоздается бесконечный цикл, в котором происходит запрос на ввод числаa. - Если число
aменьше или равно 1, то выводится сообщение об ошибке и цикл продолжается. - Если число
aбольше 1, то цикл прерывается и выполняется следующий код. - Переменная
nинициализируется значением 2. - В цикле
whileвычисляется факториал числаnс помощью функцииfactorial. - Если факториал числа
nменьше числаa, то цикл продолжается. - Когда факториал числа
nстановится больше или равен числуa, цикл прерывается. - Выводится значение переменной
nминус 2, которое является искомой величинойN. - Программа завершается с кодом успеха
EXIT_SUCCESS.