📜  armstrong number python(1)

📅  最后修改于: 2023-12-03 15:13:29.111000             🧑  作者: Mango

计算阿姆斯特朗数的Python程序

阿姆斯特朗数是指一个n位正整数,它的每个数位的n次方之和等于它本身。例如,153是一个阿姆斯特朗数,因为 $1^3 + 5^3 + 3^3 = 153$。

本文将介绍如何使用Python编写程序来计算阿姆斯特朗数。

实现

以下是一个计算n位阿姆斯特朗数的Python函数:

def is_armstrong(num):
    n = len(str(num))
    temp = num
    sum = 0
    while temp > 0:
        digit = temp % 10
        sum += digit ** n
        temp //= 10
    return num == sum

函数首先确定数字n的位数,并使用while循环计算每个数字位的n次方之和。最后,它将比较该数字是否等于上述计算的和。

现在让我们看看如何使用该函数来查找n位内的所有阿姆斯特朗数。下面是完整的程序:

def get_armstrong_numbers(n):
    armstrong_numbers = []
    for num in range(10**(n-1), 10**n):
        if is_armstrong(num):
            armstrong_numbers.append(num)
    return armstrong_numbers

该函数接收一个整数n作为参数,然后使用for循环遍历表示n位数字的所有数字。对于每个数字,它将调用is_armstrong函数,并将结果附加到armstrong_numbers列表中。

测试

我们可以使用以下代码来测试get_armstrong_numbers函数是否正常工作:

assert get_armstrong_numbers(3) == [153, 370, 371, 407]
assert get_armstrong_numbers(4) == [1634, 8208, 9474]

第一行测试了获取所有3位数字的阿姆斯特朗数,其结果应该等于[153, 370, 371, 407]。第二行测试了获取所有4位数字的阿姆斯特朗数,其结果应该等于[1634, 8208, 9474]。

结论

在本文中,我们学习了如何使用Python编写程序来计算阿姆斯特朗数。我们编写了一个函数,用于确定数字的每个数字位的n次方之和是否等于该数字本身。我们还编写了一个函数,用于获取n位数字的所有阿姆斯特朗数。最后,我们测试了我们的函数,以确保它们正常工作。

阿姆斯特朗数是一类非常有趣的数字。它们可能会在某些应用程序中发挥作用,例如密码学或数据分析。无论如何,了解它们的工作原理总是有用的。