C++和python实现阿姆斯特朗数字查找实例代码

1. 介绍

阿姆斯特朗数字,又称为自恋数或自幂数,是指一个n位数,它的每个位上的数字的n次幂之和等于它本身。例如,153是一个阿姆斯特朗数字,因为1^3 + 5^3 + 3^3 = 153。

2. C++实现

2.1 概述

在C++中,我们可以使用循环和条件语句来实现阿姆斯特朗数字的查找。首先,我们需要找到数字的位数,然后使用循环计算每个位上数字的n次幂之和,并与原数字进行比较。

2.2 实现步骤

以下是使用C++实现阿姆斯特朗数字查找的代码:

#include <iostream>

#include <cmath>

int main() {

int number, originalNumber, remainder, result = 0, n = 0;

double power;

std::cout << "Enter an integer: ";

std::cin >> number;

originalNumber = number;

while (originalNumber != 0) {

originalNumber /= 10;

++n;

}

originalNumber = number;

while (originalNumber != 0) {

remainder = originalNumber % 10;

// 计算每个位上数字的n次幂之和

power = std::pow(remainder, n);

result += power;

originalNumber /= 10;

}

if (result == number)

std::cout << number << " is an Armstrong number.";

else

std::cout << number << " is not an Armstrong number.";

return 0;

}

2.3 实例运行

假设我们输入的数字是153,代码将计算如下:

原数字:153

位数:3

循环1:remainder=3, power=27, result=27

循环2:remainder=5, power=125, result=152

循环3:remainder=1, power=1, result=153

由于计算结果与原数字相等,所以输出结果为:"153 is an Armstrong number."

3. Python实现

3.1 概述

在Python中,我们可以使用循环和条件语句来实现阿姆斯特朗数字的查找。与C++实现类似,我们需要找到数字的位数,并使用循环计算每个位上数字的n次幂之和,并与原数字进行比较。

3.2 实现步骤

以下是使用Python实现阿姆斯特朗数字查找的代码:

def is_armstrong_number(number):

original_number = number

n = len(str(number))

result = 0

while original_number != 0:

remainder = original_number % 10

# 计算每个位上数字的n次幂之和

power = remainder ** n

result += power

original_number //= 10

if result == number:

return True

else:

return False

# 测试代码

number = int(input("Enter an integer: "))

if is_armstrong_number(number):

print(number, "is an Armstrong number.")

else:

print(number, "is not an Armstrong number.")

3.3 实例运行

假设我们输入的数字是153,代码将计算如下:

原数字:153

位数:3

循环1:remainder=3, power=27, result=27

循环2:remainder=5, power=125, result=152

循环3:remainder=1, power=1, result=153

由于计算结果与原数字相等,所以输出结果为:"153 is an Armstrong number."

4. 总结

本文通过C++和Python两种编程语言实现了阿姆斯特朗数字的查找。通过循环和条件语句,我们可以找到一个数的每个位上数字的n次幂之和,并与原数字进行比较,从而判断其是否为阿姆斯特朗数字。这种方法在实际应用中可以用于验证数字的特殊性质。

后端开发标签