Python 练习(初来乍到)

完美数字

问题描述:

完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。例如,第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。

Solution (other’s)

def isPerfectNumber(n):
    a = 1
    b = n
    s = 0

    while a < b:
        if n % a == 0:
            s += a + b
        a += 1
        b = n / a

    if a == b and a * b == n:
        s += a

    return s - n == n

for k in range(2, 10000):
    if isPerfectNumber(k):
        print k

上面的程序是其他人的解法,有点复杂,自己编的在下面。

Solution (mine):

def perfectnumber(n):     #定义函数
    a=[]                  #定义一个用于放约数的空数组(注意,定义在函数外面会出错)           
    for i in range(1,n):
        if n%i==0:
            a.append(i)     #将所有约数添加到a数组中
    return sum(a)==n        #所有约数求和若等于n

for b in range(1,10000):
    if perfectnumber(b):     
        print b
6
28
496
8128

这几天在学习《机器学习实战》,kNN,决策树和朴素贝叶斯已经看了,原理都很容易理解,代码开始很费劲但是边学边查也能看得懂了,不过真的自己敲还是有难度。感悟就是,程序虽然看上去密密麻麻,但是可以变得井井有条,一个个函数块的创建和调用,可以瞬间让你思路清晰。语言真的很神奇,学好一门语言需要逻辑清晰有条理,这些是一种思维方式、习惯,要体会、要培养。

第一遍不细究代码,重点看各种算法的原理。自己敲代码的时候一定来这做笔记!

猜你喜欢

转载自blog.csdn.net/qq_43243022/article/details/82859185
今日推荐