Ответ:
(см. объяснение)
Объяснение:
При решении данной задачи разумно воспользоваться формулой Джеймса Стирлинга для вычисления приближенного значения факториала, которая имеет вид:
Она позволит избежать использования цикла и уменьшит время работы программы.
Реализуем этот алгоритм на языке программирования и сравним, насколько сильно отличаются значения:
using namespace std;
int main()
{
int n;
cout << "n=";
cin >> n;
cout << "n!~" << round(pow(n,n)/exp(n)*sqrt(2*acos(-1.0)*n));
int k=1;
for(int i=2; i<=n; ++i)
k*=i;
}
cout << endl << "n!=" << k << endl;
return 0;
(Демонстрацию работы программы смотреть в прикрепленном файле)
Copyright © 2025 SCHOLAR.TIPS - All rights reserved.
Answers & Comments
Ответ:
(см. объяснение)
Объяснение:
При решении данной задачи разумно воспользоваться формулой Джеймса Стирлинга для вычисления приближенного значения факториала, которая имеет вид:
Она позволит избежать использования цикла и уменьшит время работы программы.
Реализуем этот алгоритм на языке программирования и сравним, насколько сильно отличаются значения:
using namespace std;
int main()
{
int n;
cout << "n=";
cin >> n;
cout << "n!~" << round(pow(n,n)/exp(n)*sqrt(2*acos(-1.0)*n));
int k=1;
for(int i=2; i<=n; ++i)
{
k*=i;
}
cout << endl << "n!=" << k << endl;
cin >> n;
return 0;
}
(Демонстрацию работы программы смотреть в прикрепленном файле)