python的效率实在是比不上c!

类别:编程语言 点击:0 评论:0 推荐:
    今天用python写了两个程序,水仙花数和完美数!经典的c练习题!
    水仙花数的程序很小,没什么感觉,完美数的程序就复杂一些了!
    同学用c写,我用python写,代码几乎是对等翻译!我用的机器cpu主频超过同学的两倍,内存是同学的4倍,就这样,程序运行的时间几乎相同(10w个数据)。。。可想而知,python作为解释型语言,速度上面确实是个巨大的问题!我曾经看到有文章说,就算对解释型语言,python也是其中比较慢的,可怕。。。想象一下运行起来比basic还慢的程序。。。!疯了!
    还有就是,python的模板函数运行起来必须带模板的名称!比如开方的函数!
    c是这样写:
include<math.h>
sqrt(5);
就行了,直接可以调用sqrt()!
    python必须这样写:
import math
math.sqrt(5)
math是必须要加上的,既然已经import math了,为什么还要加呢?不明白!!!
    不是一个很方便的东东。。。hoho!

附注1:
水仙花数:各位数字的立方和等于原来的数!
    结果:153,370,371,407
完美数:各个因子(素因子及其任意组合乘积,不包括这个数本身,但是包括1)之和等于原来的数!
    结果:6,28,496,8128(10万以内)

附注2:
    事实上,水仙花数可以扩展为任意位数,不过n位数必须要求是n个数字的n次方和,否则会无解!以下是我的代码,只考虑的计算问题,没有考虑输入的出界问题,比较草!大家批评指正!
n=input('Number of position?')
p=[0]*n
for i in range(pow(10,n-1),pow(10,n)):
    k=i
    for j in range(0,n):
        p[n-j-1]=k%10
        k=k/10
    sum=0
    for j in range(0,n):
        sum=sum+pow(p[j],n)
    if sum==i:
        print i

    今天就这么多,明天再继续吧!

本文地址:http://com.8s8s.com/it/it26266.htm