精华内容
下载资源
问答
  • 阶乘

    千次阅读 2021-03-08 18:18:02
    N的阶乘写作N!表示小于等于N的所有正整数的乘积。阶乘会很快的变大,如13!就必须用32位整数类型来存储,70!即使用浮点数也存不下了。你的任务是找到阶乘最后面的非零位。举个例子,5!=12345=120所以5!的最后面的非零...

    N的阶乘写作N!表示小于等于N的所有正整数的乘积。阶乘会很快的变大,如13!就必须用32位整数类型来存储,70!即使用浮点数也存不下了。你的任务是找到阶乘最后面的非零位。举个例子,5!=12345=120所以5!的最后面的非零位是2,7!=1234567=5040,所以最后面的非零位是4。
    输入描述:
    共一行,一个整数不大于4,220的整数N。

    输出描述:
    共一行,输出N!最后面的非零位。
    示例1
    输入
    7
    输出
    4

    #include<stdio.h>
    int main()
    {
        int n,i,sum=1;
        scanf("%d",&n);
        for(i=2;i<=n;i++)
        {
            sum*=i;
            while(sum%10==0)
                sum/=10;
            sum%=1000;
        }
        printf("%d\n",sum%10);
        return 0;
    }
    
    展开全文
  • java阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘
  • 100阶乘100阶乘100阶乘100阶乘100阶乘100阶乘100阶乘100阶乘
  • 阶乘

    2019-10-13 13:00:29
    阶乘
    
    
    	
    	阶乘
    
    
    	
    
    
    
    展开全文
  • 阶乘 阶乘计算 大数阶乘 大整数阶乘 用数组计算阶乘
  • python的阶乘

    千次阅读 2019-08-03 10:26:00
    阶乘

    python的阶乘

    一、定义

    **阶乘:**就是从1一直乘到它本身,特别的,0的阶乘为1

    二、推理

    0的阶乘是1,1的阶乘是1乘0的阶乘,2的阶乘是2乘1的阶乘,3的阶乘是3乘2的阶乘,4的阶乘是4乘3的阶乘。。。

    三、代码

    num = input("输入一个数字:")
    if num.isdigit():        #要求输入的是大于等于0的自然数
        num = int(num)
        result = 1
        for i in range(1,num+1):
            result *= i
            pass
        print(result)
        pass
    else:
        pass
    

    四、总结

    同样的,因为阶乘的数有规律可循,也可以使用递归的算法:

    def factorial(n):
    	if n == 0:        #递归的结束条件
        	return 1
        return n * factorial(n-1) #公式:n乘n-1的阶乘,n-1乘n-2的阶乘,一直到n=0的时候,递归结束,返回结果
    	pass
     print(factorial(5))      #计算5的阶乘
    

    以上内容仅供参考,切勿用于商业用途,如有雷同,纯属偶然!

    展开全文
  • 易语言递推阶乘源码

    2020-07-21 15:06:54
    易语言递推阶乘源码,递推阶乘,计算阶乘
  • 循环求阶乘

    2018-05-30 16:09:15
    算法课程中的重点知识,循环求阶乘。利用递归和循环求阶乘 求一个数的阶乘
  • 阶乘运算(Factorial)任何大于等于1 的自然数n ...阶乘的计算直接求阶乘,需要经过大量的乘法运算,位数太多,计算机也无法表示出来。此时,往往采用对数方法,将阶乘的乘法运算化为加法运算。如编写一段Python语言...

    阶乘运算(Factorial)

    任何大于等于1 的自然数n 阶乘:

    75540a15aacf898bc9cf77701819ad0a.png

    也即

    10df9dc58fb4ece0168227e3c9ee5ee3.png

    下表给出了一些自然数的阶乘值:

    ddb184a29e9ac64966b5ed82d7022127.png
    31e67c3479629858cf35691a470a2cb2.png

    https://en.wikipedia.org/wiki/Factorial

    2223dfdb4af5f4602815ccd25dbac84a.png

    100!是一个158位的整数

    100!这么大的数到底怎么算出来的呢?

    阶乘的计算

    直接求阶乘,需要经过大量的乘法运算,位数太多,计算机也无法表示出来。此时,往往采用对数方法,将阶乘的乘法运算化为加法运算。如

    0027fc9423c503e56a438dce7d0e6d3c.png

    编写一段Python语言代码求等式右边的值:

    import math

    digit_num =0.0

    for i in range(100):

    digit_num += math.log10(i+1)

    print(digit_num)

    运行得到

    157.97000365471575(近似值),即

    bd4cc123bdba392ff3929e2670c8ac88.png

    这说明100!是一个158位的数。根据对数函数与指数函数的关系,可以反求出阶乘值:

    b7ef00ec51aeaf5b0a2ab0bd1c70b3f9.png

    以前不理解对数意义的朋友这里可以体会到对数的强大威力了吧?

    另,阶乘有一个有趣的近似公式:

    fd10024975a01461a6d786368d488c96.png

    斯特林()公式- Stirling's approximation

    37cfe1a9e1eb5a666c3f73744ed4e82c.png

    斯特林公式与阶乘曲线对比

    我们实际验证一下斯特林公式的误差。将n=100代入上述公式,得到100!≈9.3248476252693432477647561271787023234709745647418062292817958153368849555554046603086239162755522767325066157982750581730201788648720772023094674209485726744222550819049228652031041119504096696429434529708431163809342056757648101523406286160085266735172818639831611426620941684736285030409855242311268344207307073067790438191255736013812573265362270229118719809726115438569410402607630035313046957956392566366745658132452941877904052886947223641749037779513877635612354880691524914259437590327045612488757528210... × 10^157

    与我们用对数求得的值之间的误差大约为0.08329%,即万分之8.3,相当精准吧!!!

    阶乘的延拓

    可以将点(n, n!)即(0, 0!), (1,1!), (2,2!), (3,3!),...在平面坐标系上表示出来。

    d10681412c048bb32392632bfcdca657.png

    n!, n=0..4

    8910aaf4aca74f62c6d1c91447b03292.gif

    n!, n=0..6

    d7c8344fba53b488e0de4521908d17b5.gif

    n!, n=0..10

    我们能不能找到一条数学曲线,能够穿越上述所有点(n,n!)呢?找到这样一条曲线的过程就是数学上的解析延拓,从整数域解析延拓到实数域。

    伽玛函数

    人类恰恰找到了这样一个函数,即伽玛函数(Gamma Function)。伽玛函数的定义如下:

    b04d5a53aba8d18a59bf9a96ef8369d6.png

    伽玛函数是一个用定积分公式定义的函数,所以求伽玛函数变成了求定积分。不难求得:

    7d76495ff84455fcd977474ab52350a7.png

    进而

    38e2e6e6ec1ee5ff73de9ee54b987f69.png

    伽玛函数与实数域阶层的关系

    1674e247ad0e5add438d5307d4369c68.png
    51be6d024202d2cfd092b2d5aba454a3.png

    这些结论我就不做证明了,一方面这些知识可以很便捷地索到,另一也是更重要的方面是,毕竟我的目标不是吓唬大家和显摆自己的学问,而是希望尽可能充分地向大家分享、呈现数学的奥妙、美丽和魅力。

    从该等式可以看出,阶乘不就是伽玛函数从实数域降维到整数域的降维函数吗?反之,伽玛函数不正是阶乘序列在从整数域向实数域的延拓吗?

    伽玛函数衍生出的一个常数,即为弗朗桑-罗宾逊常数(Fransén–Robinson Constant):

    0a19174562566724c3c02deddfeb583f.png

    问题:伽玛函数是阶乘运算的唯一解析拓展函数吗?

    答案是否定的,因为满足这样的拓展函数有无数个。如如下函数在横坐标为整数时的值也等于对应的阶乘值:

    35a1d97b37930c6ff8b47e65069232b1.png
    01c0fe842b6b147a50a8e336768f6b22.png

    实数域的阶乘函数

    因为

    cd02356b17da1074d2ff287195004df4.png

    也就是说

    59d340aec7af3093747ded88eb97b2fb.png

    用如下方式来表示这个阶乘函数:

    df3488c76081079e44b51e85ad29586d.png

    该阶乘函数有如下递推性质(从小到大,算正数的阶乘时用到):

    10cf200e212ecd2b79be7d782d50609c.png

    从上面的递推公式,我们可以得到新的递推公式(从大到小,算负数的阶乘时用到):

    75f8d243e21d3ca3ab2599ebd210b653.png

    我们试着求一下几个非整数实数的阶乘函数值:

    3424ba41ca4a9691fc0ca9bf1d5b3b83.png

    根据这个值可以推出其他一系列值:

    7f38bc5879c21a06e0c01c71b6a9f5e0.png
    7c4102cb0ea4f2f858d8b47df7e20727.png
    d1d8e04cb6e2120fc8861eb36d9ff9ba.png
    570d02e4294262c6c87cd483d60a8ff9.png
    076eabf0d2dea690abb0867ae80deafc.png
    8e5207487388bb3b8cf2084cf30dd070.png

    这π(x)就是实数域阶乘函数的一个合理定义公式。阶乘函数y=π(x)=x!的曲线如下图:

    5c7bf672c32f9d6bc08b723c9864ada2.png

    我们发现上述阶乘函数在负整数处不连续,即不收敛,与我们计算的结果相符:

    13305369d3163fc369346bc3fb8e10f2.png

    最后再求两个特殊的阶乘

    40813b4adbf53efe9c446d21cf3eddcd.png

    其实阶乘还可以延拓到复数域,如

    24ad91476a9ab1a1c5d34b7852ab93d9.png

    复函数

    2de5be8f8db72edd394abdbf43f8415d.png

    曲线图如下

    42346823f697d972cd9c890ad4a012b9.png

    (cosx+isinx)!的曲线图

    人家在何许?云外一声鸡

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,963
精华内容 12,385
关键字:

阶乘