编写程序,显示出所有的水仙花数。所谓水仙花数,是指一个三位数,它的每位上的数字的3次幂之和等于该数字本身。例如153是水仙花数,因为153=1的三次方加5的三次方加3的三次方。利用三重循环,将三个数连接成一个三位数进行判断
时间: 2025-01-23 12:15:07 浏览: 29
在编写程序找出所有的水仙花数时,你可以采用如下的步骤:
首先,创建一个函数来检查一个数字是否为水仙花数。这个函数会接收一个整数作为输入,然后计算各位数字立方和,如果和等于原数,则返回True
,否则返回False
。
def is narcissistic_number(num):
digits = [int(digit) for digit in str(num)] # 将数字转换为列表并提取每一位
return sum([digit ** 3 for digit in digits]) == num
接下来,你可以使用三层嵌套循环遍历所有三位数。外层循环从100到999,中间层循环用于处理百位,内层循环处理十位和个位。对每个三位数,调用is_narcissistic_number
函数进行验证,如果是,就打印出来。
for i in range(100, 1000): # 从100到999
if is_narcissistic_number(i):
print(i)
运行此程序,它将输出所有的水仙花数。
相关问题
用c++编写程序找出所有水仙花数(一个三位数的每为数字的立方和等于该三位数称为水仙花数)
在 C++ 中,要找出所有的水仙花数,你可以创建一个函数来检查给定的整数是否满足条件,然后遍历从 100 到 999 的范围。以下是简单的步骤:
#include <iostream>
#include <cmath>
bool is narcissistic(int number) {
int sum = 0;
int original_number = number; // 保存原始数值以便计算每位的立方
while (number > 0) {
int digit = number % 10;
sum += std::pow(digit, 3); // 计算每一位的立方并加到总和上
number /= 10;
}
return sum == original_number; // 如果总和等于原数,就是水仙花数
}
int main() {
for (int i = 100; i <= 999; ++i) {
if (is_narcissistic(i)) {
std::cout << i << " 是一个水仙花数.\n";
}
}
return 0;
}
在这个程序中,is_narcissistic
函数负责判断,而 main
函数通过迭代找到所有的水仙花数并打印出来。
题目要求编写一个程序,输出所有水仙花数。所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。用程序编写
可以使用循环遍历所有三位数,对每个数进行立方和计算,判断是否等于该数本身。
以下是 Python 代码实现:
for i in range(100, 1000):
# 拆分百位、十位、个位数字
a = i // 100
b = (i // 10) % 10
c = i % 10
# 计算立方和
sum = a**3 + b**3 + c**3
# 判断是否等于该数本身
if sum == i:
print(i)
程序输出的结果是:
153
370
371
407
因此,所有的水仙花数是 153、370、371、407。
相关推荐
















