1000!.低效率易懂版.谢谢各位指正

  • 来源: 编程中国 作者: 若水   2008-04-23/10:42
  • /*
    1000!的阶乘速度还算可以忍受了,当然和孔明,飞燕的大数阶乘的效率是不能比的了.
    但理解起来比较方便.所以帖出来玩玩.大家给点意见吧.数组可以再定义大点,算更大的数要好
    久才出结果有什么BUG请大家批评和指正.谢谢各位了.
    */

    /**
    * @(#)factorial.cpp *
    *
    * @author nuciewth
    * @version 1.00 2007/10/20
    */

    #include<stdio.h>

    int main()
    {
        int data[20000]={1,1,0}; //初始化,数组从1开始记数
        int num;                 //阶乘大小
        int digit=1;             //每次阶乘得出结果的位数
        scanf("%d",&num);
        for(int i=1;i<=num;i++)
        {
            for(int j=1;j<=digit;j++)//先做每一位与i的乘积放在一个数组空间中
            {
                data[j]*=i;
            }
            for(int j=1;j<=digit;j++)//调整个元素的值,使之在0--9之间
            {
                if(data[j]>9)        
                {
                    for(int k=1;k<=digit;k++)
                    {
                        if(data[digit]>9)     //位数增加
                        {
                            digit++;
                        }
                        data[k+1]+=data[k]/10;//调整
                        data[k]%=10;
                    }
                }
            }
        }
        printf("%d!=",num);
        for(int j=digit;j>0;j--)
        {
            printf("%d",data[j]);
        }
        printf("\n");
        return 0;
    }


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多