gpt4 book ai didi

c - C中的公式P(n) = (n!)(6^n)产生了一个很大的值

转载 作者:太空宇宙 更新时间:2023-11-04 05:56:05 25 4
gpt4 key购买 nike

我试图在 C 中表示以下数学表达式:

P(n) = (n!)(6^n)

程序应在 n = 156 时计算表达式的答案。我曾尝试用 C 语言创建程序,但未能生成答案。答案大约是 10^397。该程序使用 2 个对数恒等式。它还利用斯特林近似来计算大阶乘。

我怎样才能让它产生正确的答案,你对我如何改进代码有什么建议吗? (我对编程还很陌生):

#include <math.h>
typedef unsigned int uint;

int main()
{
uint n=156; // Declare variables
double F,pi=3.14159265359,L,e=exp(1),P;
F = sqrt(2*pi*n) * pow((n/e),n); // Stirling's Approximation Formula
L = log(F) + n*log(6); // Transform P(n) using logarithms - log(xy) = log(x) + log(y) and log(y^n) = n*log(y)
P = pow(e,L); // Transform the resultant logarithm back to a normal numbers
}

谢谢! :)

最佳答案

大多数 C 实现中的整数和浮点变量都不能支持这种数量级的数字。典型的 64 位 double 会达到 10308 之类的值,在该数量级会出现大量精度损失。

您需要所谓的“bignum 库”来计算它,这不是标准 C 的一部分。

关于c - C中的公式P(n) = (n!)(6^n)产生了一个很大的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27256720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com