欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

自学编程python两种方法算出阿姆斯特朗数

程序员文章站 2022-06-17 15:20:20
阿姆斯特朗数,一个n位数的各位n次方只和等于这个数本身,判断是不是阿姆斯特朗数。方法1 一个数除以10取余,就是这个数的个位,再把这个数除以10取整,继续除以10取余,就是这个数百位的,依次遍历,可以得到每位的数。def amstl():sumnum = 0number = int(input(“请输入数字:”))temp = numberwhile temp > 0: n = len(str(number)) gewei = temp % 10 sumnum +=...

我之前没有任何编程的基础,python是我在上下班的空余时间学习的,也是希望在自己本职工作中能够多一个技能,能够用在工作和生活中,帮助到自己。

阿姆斯特朗数,一个n位数的各位n次方之和等于这个数本身。

方法1 一个数除以10取余,就是这个数的个位,再把这个数除以10取整,继续除以10取余,就是这个数十位的,依次遍历,可以得到这个数的每一位数字。

def amstl():
    sumnum = 0
    number = int(input("请输入数字:"))
    temp = number

    while temp > 0:
        n = len(str(number))
        gewei = temp % 10
        sumnum += gewei ** n
        temp //= 10

    if sumnum == number:
        print("这个数是阿姆斯特朗数")
    else:
        print("这个数不是阿姆斯特朗数")

amstl()

方法2 把这个数当做字符串来处理,虽然没有任何算法可言,但是代码少。

def str_amstl():
    str1 = input("请输入一个数用于判断:")
    n = len(str1)
    sumstr = 0
    for item in str1:
        sumstr += int(item) ** n
    if sumstr == int(str1):
        print(f"{str1}是阿姆斯特朗数")
    else:
        print(f"{str1}是不阿姆斯特朗数")

str_amstl()

给定一个范围,求这个范围内的阿姆斯特朗数:

def fw_asstl(m, n):
    """求一个范围之内的阿姆斯特朗数,m为起始,n为结束,n>m>1"""
    numberlist = []

    for item in range(m, n+1):
        sumnumber = 0
        number = item

        while number > 0:
            n = len(str(item))
            gewei = number % 10
            sumnumber += gewei ** n
            number //= 10
        if item == sumnumber:
            numberlist.append(item)
    print(numberlist)

本文地址:https://blog.csdn.net/huafeio/article/details/111086769