摘要:
本文给出了另一个计算整数平方根的程序,和整数平方根的计算(一)不同,他主要使用牛顿法来求平方根,大整数运算调用GMP整数运算库。全部的代码能够从http://download.csdn.net/download/liangbch/4070516 下载。
算法:
这个程序的主要算法是牛顿迭代法。他首先得到一个平方根的初始值,然后使用牛顿迭代法逐步求精,在计算过程中,始终用两个整数的比表示整数平方根的值。最后,它转换分数表示的平方根为10进制字符串。
说明: 该文有待完善。
性能分析:
对比PiFast,它的性能仍然不是很好,我特意分析了这个程序各个部分的时间开销,发现主要瓶颈在最后输出部分。下表给出计算2的平方根的时间花费。
steps | Time(seconds) | Percentage |
calc | 0.308532 | 10.92% |
x=pow(10,d) | 0.094357 | 3.34% |
p*= (10^d) | 0.371915 | 13.17% |
p/q | 0.708144 | 25.07% |
toString | 1.177165 | 41.68% |
print to file | 0.164422 | 5.82% |
total | 2.824535 | 100.00% |