重发一个计算1-999的阶乘汇编
阶乘汇编用不同方法写过几几遍了,最大好像算到'几万'的!,考虑到空间和速度,可谓奇技淫巧尽出,n!越大方法越复杂.若写个999以内的!,普通的大数相乘就是,也不要多少技术.
简述一下
阶乘就是n * n-1 * n-2 ......... *1
若n=6,就是 6 x 5 x 4 x 3 x 2 x 1 = 720
若n=12,就是 12 x 11................= 479001600
N值越大,阶乘结果越大,这让只有16的暂存器的dos程式十分头痛
即便32或64bit其实也只能算到20的阶乘,因为
21!已经是51090942171709440000,大于64bit的限制
其实有许多方法突破这个限制,吧上也有些不错的,若999就一个大数乘法就是,这里我写了一个最简单的,
长度约130行,有兴趣可以在下面回覆,我回头再贴代码.
阶乘汇编用不同方法写过几几遍了,最大好像算到'几万'的!,考虑到空间和速度,可谓奇技淫巧尽出,n!越大方法越复杂.若写个999以内的!,普通的大数相乘就是,也不要多少技术.
简述一下
阶乘就是n * n-1 * n-2 ......... *1
若n=6,就是 6 x 5 x 4 x 3 x 2 x 1 = 720
若n=12,就是 12 x 11................= 479001600
N值越大,阶乘结果越大,这让只有16的暂存器的dos程式十分头痛
即便32或64bit其实也只能算到20的阶乘,因为
21!已经是51090942171709440000,大于64bit的限制
其实有许多方法突破这个限制,吧上也有些不错的,若999就一个大数乘法就是,这里我写了一个最简单的,
长度约130行,有兴趣可以在下面回覆,我回头再贴代码.