下面我会详细讲解“C++和Python实现阿姆斯特朗数字查找实例代码”的完整攻略,并且给出两条示例。阿姆斯特朗数字指的是一个n位数,它的每个数位的n次方之和等于它本身。比如说153是一个阿姆斯特朗数字,因为:$1^3 + 5^3 + 3^3 = 153$。
C++实现阿姆斯特朗数字查找
- 首先定义一个函数
isArmstrong()
,用于判断一个数是否为阿姆斯特朗数字。它的输入是一个整数,输出是一个布尔值 true/false。
bool isArmstrong(int num) {
int sum = 0;
int temp = num;
int n = to_string(num).length();
while (temp != 0) {
int digit = temp % 10;
sum += pow(digit, n);
temp /= 10;
}
return sum == num;
}
这个函数的实现很简单,我们通过循环和取模运算来得到每个数位的值,然后将每个数位的值的n次方求和,最后判断求和结果是否和原数相等即可。
- 接下来是主函数,我们可以在主函数中输入一个范围,然后遍历这个范围内的数字,判断每个数字是否为阿姆斯特朗数字,如果是,就输出它。
例如,我们要在1到1000之间查找阿姆斯特朗数字:
int main() {
int start = 1, end = 1000;
for (int i = start; i <= end; i++) {
if (isArmstrong(i)) {
cout << i << " is an Armstrong number." << endl;
}
}
return 0;
}
以上就是一个简单的C++实现。
Python实现阿姆斯特朗数字查找
Python的实现和C++类似,只不过语法稍有不同。以下给出两种Python实现的方式。
实现方式一
- 定义函数
is_armstrong()
,用于判断一个数是否为阿姆斯特朗数字。和C++实现类似,它的输入是一个整数,输出是一个布尔值 true/false。
def is_armstrong(num):
n = len(str(num))
sum = 0
temp = num
while temp > 0:
digit = temp % 10
sum += digit ** n
temp //= 10
return sum == num
- 主函数如下,同样是输入一个范围,然后遍历范围内的数字,判断每个数字是否为阿姆斯特朗数字,如果是,就输出它。
def main():
start = 1
end = 1000
for i in range(start, end + 1):
if is_armstrong(i):
print(i, "is an Armstrong number.")
实现方式二
- 定义函数
armstrong_numbers()
,输入是一个数字数字n,输出是一个长度为n的列表,表示1~n中的所有阿姆斯特朗数字。
def armstrong_numbers(n):
return [i for i in range(1, n+1) if is_armstrong(i)]
- 主函数如下,调用
armstrong_numbers()
来得到1~1000中所有的阿姆斯特朗数字。
def main():
print(armstrong_numbers(1000))
以上就是两种Python实现阿姆斯特朗数字查找的方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++和python实现阿姆斯特朗数字查找实例代码 - Python技术站