美文网首页算法
2018-01-16 求阶乘尾部的0的个数

2018-01-16 求阶乘尾部的0的个数

作者: BlackChen | 来源:发表于2018-01-16 10:12 被阅读74次
      long long n = 0;
        printf("请输入一个正整数\n");
        scanf("%ld",&n);
    
        long long k = 0 ,s  = n;
        while(s > 0){
            s /= 5;
            k +=s;
        }
        printf("%ld 的阶乘中,末尾有%ld个'0' \n",n,k);
    

    解析:

    • 标准(素因数)分解式
      求正整数的标准分解式的过程叫做正整数的素因数分解。
      任意整数n>1都可以唯一表示为:
      n=(p1a1)*(p2a2)……(pk^ak)
    • 尾数0分解
      尾数有几个0,就是说可以被几个 10 整除 ,也就是说可以被 几个2*5整除,因为每2个数,就能被2 整除,每5个数能被5整除,所以能被5整除的个数小于能被2整除的个数, 所以求出能被几个5 整除则可以成功求得能被几个10 整除.

    使用到了阶乘的标准分解式中素因数的指数,


    阶乘:
    阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语。

    一个正整数的阶乘factorial)是所有小于及等于该数的正整数,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。

    1 - 1000 的阶乘:
    http://blog.csdn.net/lzmtw/article/details/1344490

    相关文章

      网友评论

        本文标题:2018-01-16 求阶乘尾部的0的个数

        本文链接:https://www.haomeiwen.com/subject/plzjoxtx.html