遇到一个题目:从100999各个位数的立方和相加等于这个数本身就是水仙花数,用程序列出100999的水仙花数
int c = s / 100;这才是最高位
算法设计如下:
算法性能分析
算法性能分析的目的是看算法实际是否可行,在同一问题存在多个算法时,评价算法性能的标准主要从算法执行时间与占用存储空间两方面考虑,即用算法执行所需的时间和存储空间来判断一个算法的优劣。
当然,设计者希望选用一个所占存储空间小、运行时间短、其他性能也好的算法,但是现实中很难做到十全十美,原因是上述要求有时相互抵触。节约算法的执行时间往往要以牺牲更多的存储空间为代价;而为了节省存储空间又可能要以牺牲更多的时间为代价。因此只能根据具体情况有所侧重。若该程序使用次数较少,则力求算法简明易懂,易于转换为上机的程序。
当一个算法转换成程序并在计算机上执行时,其运行所需要的时间取决于下列因素。
(1)硬件的速度。
(2)书写程序的语言。
(3)编译程序所生成目标代码的质量。对于代码优化较好的编译程序,其生成的程序质量较高。
(4)问题的规模。例如,求100以内的素数与求1000以内的素数,其执行时间必然是不同的。
1.算法的执行时间和语句频度
算法的执行时间是指一个算法中所有语句执行时间的总和。每条语句的执行时间等于该条语句的执行次数乘以执行一次所需的实际时间。
语句频度是指该语句在一个算法中重复执行的次数。一个算法的时间耗费就是该算法中所有语句的频度之和。