}
i++;
finish=clock(); usetime= finish-start;
printf(\方法三用时%.f*10^(-6) 豪秒\\n\ usetime);
}}五、实验过程原始记录( 测试数据、图表、计算等)
三种算法得到结果验证结果:
计数器:做一次循环就加一
计算算法运行时间结果:在计算时间过程中因为计算机的运算速度很快,所以利用了循环把时间精确得到10毫秒
-6
六、实验结果、分析和结论(误差分析与数据处理、成果总结等。其中,绘制曲线图时必须用计算纸或程序运行结果、改进、收获)
在本次实验中代码是独自完成的,一开始我感觉这个代码最多半小时就可以完成,但是第三个算法
-11-
的时候我分析了好久才写出来,在计算三种方法运行时间的时候,我一开始只精确到毫秒(ms),计算结果都是零,后面我写了一个循环调试才发现是我的精确度还在不够,所以我想到了计算算法执行了1000000次之后所用的时间,然后再求平均每次执行的时间。
结果分析:从前面的复杂度O(n)的出欧几里得算法的是最优算法,连续整除法其次,最复杂的是分解质因数算法,再从代码运行的计数器和计算的时间来看结果恰好和前面的复杂度得到的结果一致,所以的出结论:欧几里得算法最优。
从这次实验的结果我了解到了算法的优与劣的差别,虽然得到的是同样的结果,但是需要的时间和资源却相差很大,这提示我们在以后写算法的时候要找出最优算法。可见算法分析与设计课程的对计编程的人来说是多么的重要,在以后写程序过程中要时刻提醒自己找最优算法,当然得先学会O(n)的分析。
-12-