擂台:分数化小数
题目描述:
将分数转化为小数,相信很多人都会吧.在计算机中并能直接进行分数运算,需要将分数转换化为浮点数或双精度数才能运算,但这样会导致结果的不精确,那么,这里给定一个分数N/D,N为分子,D为分母(N,D均为整数),请给出分数精确运算的方法并编程求出N/D的精确小数形式,当然如果这个小数为无限循环小数,则把循环的部分用括号括起来,接着循环的部分则省略不写。比如:
1/3 =0.(3)
22/5=4.4
1/7 =0.(142857)
2/2 =1.0
3/8 =0.375
45/56 =0.803(571428)
算法不难,我自己也写了一个,但不满意,设此擂台,希望强人能给出更好的代码。
我的程序运行效率(数据输出到文件中):
当N/D=1/100003 time : 0ms
当N/D=1/1000003 time : 16ms
当N/D=1/10000019 time : 1515ms
当N/D=1/50000017 time : 7500ms
当N/D=1/100000007 time : 15094ms
当N/D=1/1000000007 time : 201594ms