什么是阿姆斯特朗数

阿姆斯特朗数(也称为自恋数或复数不变量)是数学中的一个概念,多用于计算机语言编程。

如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。

例如1^3 + 5^3 + 3^3 = 153

当n=3时,又称水仙花数,特指一种三位数,其各个数之立方和等于该数。

水仙花数共有4个,分别为:153、370、371、407。

数字 371 是阿姆斯特朗数,因为:

3^3 + 7^3 + 1^3 = 371

数字 9474 是阿姆斯特朗数,因为:

9^4 + 4^4 + 7^4 + 4^4 = 9474

因此,一般来说,如果一个n位正整数等于其各位数字的n次方之和

再直白点的解释:阿姆斯特朗数等于其数字的立方体之和。

370 = 3*3*3 + 7*7*7 + 0*0*0 => 370 是阿姆斯特朗数。

下面我们通过 Python 的函数来检查一个数字是否是阿姆斯特朗数字:

方式1:

def is_armstrong_number(n):
  digits = str(n)
  num_digits = len(digits)
 
 
  sum_of_digits = 0
  for digit in digits:
    sum_of_digits = sum_of_digits + int(digit) ** num_digits
 
  return sum_of_digits == n
 
#test
print( is_armstrong_number(371))

方式2:

def is_armstrong_number(n):
    # 将数字转换为字符串以计数数字
    digits = str(n)
    num_digits = len(digits)
    
    # 计算提升到位数的幂的位数的总和
    sum_of_digits = sum(int(digit)**num_digits for digit in digits)
    
    # 检查数字之和是否等于原始数字
    return sum_of_digits == n

方式3:

def is_armstrong(num):
    # 求每个数字的立方和
    sum = 0
    temp = num
    while temp > 0:
        digit = temp % 10
        sum += digit ** 3
        temp //= 10
    # 返回结果
    return num == sum
 
# 接受用户的输入
num = int(input("输入一个整数: "))
 
# 调用函数并打印结果
if is_armstrong(num):
    print(num, "是一个阿姆斯特朗数。")
else:
    print(num, "不是一个阿姆斯特朗数。")

输出:

输入一个整数: 153
153 是一个阿姆斯特朗数


方法4:

# To check if a number is Armstrong Number or not

number = int(input("输入一个整数 : "))
i = 0
temp = number
while temp > 0:
    digit = temp % 10
    i += digit ** 3
    temp //= 10

# Print result
if number == i:
    print(number, "是一个阿姆斯特朗数")
else:
    print(number, "不是一个阿姆斯特朗数")

输出:

输入一个整数 : 370
370 是一个阿姆斯特朗数
输入一个整数 : 125
125 不是一个阿姆斯特朗数
输入一个整数 : 153
153 是一个阿姆斯特朗数

代码解释:

  1. def is_armstrong(num)::此行定义了一个名为的is_armstrong函数,该函数接受单个参数num
  2. sum = 0:此行使用 0 初始化sum变量,该变量将用于存储每个数字的立方体之和。
  3. temp = num:此行创建变量num的副本并将其存储在temp 中。
  4. while temp > 0::此行开始一个 while 循环,循环temp一直持续到大于 0。
  5. digit = temp % 10:此行使用模运算符,并将其存储在变量digit中。
  6. sum += digit ** 3:此行将 digit的立方体添加到变量sum中。
  7. temp //= 10:此行通过使用整数除法 (//) 删除最后一位数字来更新变量temp
  8. return num == sum:此行返回 numsum 之间的比较结果。
  9. num = int(input("Enter a number: ")):此行以整数形式接收用户的输入并将其存储在变量num中。
  10. if is_armstrong(num)::此行调用函数is_armstrong并检查其返回值。
  11. print(num, "是一个阿姆斯特朗数"):如果第 10 行num中的条件为 true,则此行将打印消息。
  12. print(num, "不是一个阿姆斯特朗数"):如果第 10 行中num的条件为 false,则此行将打印消息。