MATLAB 计算 2、一个三位整数各字的立方和等于该数本身则称该数为水仙花数。试输出全 部水仙花数。 要求: (1)用循环结构实现。 (2)用向量运算实现。
时间: 2024-12-10 14:44:41 浏览: 113
在MATLAB中,你可以通过循环结构和向量运算的方式来找出所有的水仙花数。这里分别给出两种实现方法:
**1. 循环结构实现:**
```matlab
% 初始化一个数组来存储结果
result = [];
% 定义范围内的三位数
for num = 100:999
% 分解数字为百位、十位和个位
digits = num;
if digits >= 100
hundreds = floor(digits / 100);
tens = floor((digits - hundreds * 100) / 10);
ones = digits - hundreds * 100 - tens * 10;
else
break; % 如果是个位数,跳过,因为我们只考虑三位数
end
% 检查是否满足条件
if ones.^3 + tens.^3 + hundreds.^3 == num
result = [result; num];
end
end
% 输出所有水仙花数
disp(result);
```
**2. 向量运算实现:**
```matlab
% 创建一个包含三位数的矩阵
num_matrix = 100:999;
% 使用向量运算计算每个数各位的立方和
cubed_digits = vecfun(@power, reshape(num_matrix, [], 3), 3); % 向量化操作
% 找出满足条件的水仙花数
is_hydrangea = cubed_digits == num_matrix;
water_lilies = num_matrix(is_hydrangea);
% 输出结果
disp(water_lilies);
```
这两种方法都可以找到全部的水仙花数,第一种适合教学和理解过程,而第二种更简洁高效,利用了MATLAB的向量化特性。
阅读全文
相关推荐


















