美文网首页经验App:聚合职场优选内容
Python练习实例19 | 利用Python求和数,方法一个比

Python练习实例19 | 利用Python求和数,方法一个比

作者: 暮光微晓破倾城 | 来源:发表于2020-02-22 16:32 被阅读0次

    和数,也即其所有因数的加总正好等于其本身。

    比如说:6=1+2+3。

    掌握了这个规律之后,我们首先来对其进行一下分析:我们首先需要定义一个范围,比如1000以内所有的和数是多少,然后通过for循环遍历这个范围内所有的数,通过遍历的数逐个和其因子进行求余,将其因子放入至一个列表当中,最后再将列表当中的因子相加求和判断是否是其和数本身即可。

    def f(n): # 定义一个函数f(n)
        list = [] # 同时创建一个空列表
        for i in range(1,n+1): # 将判断完数的范围值赋值给i
            for j in range(1,i): # 将所有符合条件的因子赋值给j,其中j的范围不会超过i.
                if i%j==0: # 条件判断,遍历i中的数,并且用其遍历的数对其因子j求余,如果余数为0 则表示其为和数因子
                    list.append(j) # 将和数因子加入到列表当中
    
            if sum(list) == i: # 对列表中,和数的因子进行判断
                print(i) # 并打印出和数
            list = [] # 用空列表接收和数因子的值
    
    
    if __name__ == '__main__': # 对函数进行封装
        n = int(input("请输入最大范围数字:"))
        f(n)  # 将输入值回传给上面的函数f(n)
    

    当然了,除了上述的方法之外,我们还有一个更加简单的方法,具体如下:

    def f(n): #  我们定义一个函数f(n)
        for i in range(1,n+1): # 将判断完数的范围值赋值给i
            sum = 0 # 对完数的因子初始化值
            for j in range(1,i): # 完数因子的范围
                if i%j == 0: # if条件进行判断
                    sum += j # 循环体不断对sum进行求和定义。
            if sum == i: # j循环体外,再对所有因子所求的和进行判断,如果因子相加等于完数,则满足完数条件。
                print(i) # 打印出和数
    
    if __name__ == '__main__': # 将函数f(n)进行封装
        n = int(input("请输入最大范围数字:"))
        f(n) # 将值传回上面所定义的函数当中。
    

    方法二中,我们无需创建空列表,直接对其因子进行初始化,然后对其因子直接进行sum的求和,最后再对sum的值进行判断即可。

    2020年2月22日
    北京市通州区京贸中心

    相关文章

      网友评论

        本文标题:Python练习实例19 | 利用Python求和数,方法一个比

        本文链接:https://www.haomeiwen.com/subject/zailqhtx.html