当前位置:三九宝宝网 → 宝宝教育 → 教学论文 → 正文

50的阶乘用C语言怎么写

更新:01-06 整理:39baobao.com
字体:

50的阶乘 已经很大了

要求近似值 可以用double累乘 很简单

要求精确值 就只能用大数模拟了

一下是大数算法:

#include

int main()

{

int n;

int a[9000]; //确保保存最终运算结果的数组足够大

int digit = 1; //位数

int temp; //阶乘的任一元素与临时结果的某位的乘积结果

int i, j, carry; //carry:进位

n=50;//求50!

a[0] = 1; //将结果先初始化为1

for ( i=2; i<=n; i++ ) //开始阶乘,阶乘元素从2开始依次"登场"

{ //按最基本的乘法运算思想来考虑,将临时结果的每位与阶乘元素相乘

for( j=1, carry=0; j<=digit; j++ )

{

temp = a[j-1] * i + carry; //相应阶乘中的一项与当前所得临时结果的某位相乘(加上进位)

a[j-1] = temp % 10; //更新临时结果的位上信息

carry = temp / 10; //看是否有进位

}

while(carry)

{ //如果有进位

a[++digit-1] = carry % 10; //新加一位,添加信息。位数增1

carry = carry / 10; //看还能不能进位

}

}

printf("n ! = "); //显示结果

for(j = digit; j >=1;j--)

{

printf("%d",a[j-1]);

}

printf("\n");

return 0;

}

本文地址:https://www.39baobao.com/show/29_26172.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.