大整数阶乘精确值的动态储存双向链表算法研究*
2018-08-21王世林
科技与创新 2018年16期
王世林,钱 敏,2
(1.苏州大学文正学院,江苏 苏州 215104;2.苏州大学电子信息学院,江苏 苏州 215006)
数据结构对程序设计算法优化、操作系统设计、编译系统设计等都有重要意义,其中,链表存储结构在操作系统中有重要运用[1-2]。在计算机系统中,表示不同类型的数时,由于计算单元存储位数的限制,表示精确数据的范围是一定的[3],比如16位的无符号整数的表示范围是[0—216-1],超过这个范围,只能采用浮点数。当然,浮点数是非精确值。假如在一定的场合,需要得到精确值时,必须采用一定的算法来实现。
高精度大整数运算在计算机数据加密技术中有重要应用,限于一般程序设计语言编译系统并不提供直接的运算支持,所以人们提出了各种运算方法。有关大整数阶乘精确值的计算方法已有若干文献报道[4-5],其算法一般采用数组技术,其编程思想是:用数组存放阶乘项每一项相乘后的中间结果和最终结果,每一单元存放一个若干位数;采用循环,阶乘项每一项对数组元素进行相乘,同时进行进位处理,直到所有项均乘完为止。文献[5]采用了动态数组和一些优化技术,有效地提高了该算法的运算速度,但需要一些数学技巧。本文提供了一种利用动态分配内存的链表技术,其算法不同于其他方法:用链表的结点存放每一项相乘后的中间结果和最后结果,每个结点存放一个若干位数;循环相乘时同时处理进位,末尾结点相乘时若有进位,则动态分配内存空间开辟新的结点。……
登录APP查看全文
