C程序来计算大阶乘的商

C程序来计算大阶乘的商,第1张

概述我如何编写一个c程序计算阶乘. 例如,如果我想计算(100!)/(99!),我们知道答案是100,但如果我分别计算分子和分母的阶乘,两个数字都是巨大的. 扩大Dirk的答案(哪个是正确的): #include "math.h"#include "stdio.h"int main(){ printf("%lf\n", (100.0/99.0) * exp(lgamma(100)-lga 我如何编写一个c程序来计算大阶乘.

例如,如果我想计算(100!)/(99!),我们知道答案是100,但如果我分别计算分子和分母的阶乘,两个数字都是巨大的.

解决方法 扩大Dirk的答案(哪个是正确的):
#include "math.h"#include "stdio.h"int main(){  printf("%lf\n",(100.0/99.0) * exp(lgamma(100)-lgamma(99)) );}

尝试它,它真的做你想要的,即使它看起来有点疯狂,如果你不熟悉它.使用一个bigint库将是非常低效的.拍摄伽马的日志是超快的.这一切立即运行.

您需要乘以100/99的原因是gamma相当于n-1!不是!那么是的,你可以直接做exp(lgamma(101)-lgamma(100)).另外,伽玛不仅限于整数而定义.

总结

以上是内存溢出为你收集整理的C程序来计算大阶乘的商全部内容,希望文章能够帮你解决C程序来计算大阶乘的商所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1233784.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存