永发信息网

c++求大数的阶乘要求精确值

答案:2  悬赏:20  手机版
解决时间 2021-11-13 13:20
  • 提问者网友:温柔港
  • 2021-11-13 08:27
c++求大数的阶乘要求精确值
最佳答案
  • 五星知识达人网友:骨子里都是戏
  • 2021-11-13 09:48
long int fun(int i)
{
long int sum = 1;
while(i>=1){

sum*=i;

i--;}

return sum;

}追问unsigned long long才只能算到65!,long不够。。追答你要多大的阶乘,100的阶乘怎么输出啊,而且我不知道内存中会不会因为你的这个大数据把系统给整崩溃了,呵呵。
全部回答
  • 1楼网友:七十二街
  • 2021-11-13 11:25
#include 
void BigFactorial(int m)
{
    static int a[50000]={0,1};//第一位不用
    int i,j,carry,k,tmp,lenth=1;//carry表示进位

    for (i=2;i<=m;i++)
    {
        carry=0;
        for (j=1;j<=lenth;j++)
        {
            //乘法转化为加法和进位
            tmp=a[j]*i+carry;
            a[j]=tmp%10;
            carry=tmp/10;

            //如果有进位,则向前扩展一位
            if (j==lenth&&carry!=0)
                lenth++;
        }
    }
    printf("%d的阶乘:       位数:%d  ",m,lenth);

    for(k=lenth;k>=1;k--)
        printf("%d",a[k]);
}
int main()
{
    BigFactorial(1000);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯