MatLab 求解(100:999)的水仙花数
1.什么是水仙花数?
所谓的水仙花数,指的是数字的每个位的三次方的和等于它的本身
举例:
153 = 1^3 + 5^3 + 3^3
水仙花数: 153 370 371 407 万一考试考了呢,背一下
2.使用MatLab代码实现求解
(1).使用for循环实现
源代码如下:
x=[];
for i=100:999
a=fix(i/100); %取出百位数
b=fix((i-a*100)/10); %取出十位数
c=i-a*100-b*10; %取出个位数
if (a^3+b^3+c^3)==i
x=[x i];
end
end
x
说明:在这里可以使用floor(),向负无穷取整,也可以使用fix(),向零方向取整,结果是一样的
(2)不使用for循环来实现
源代码实现:
Num = 100:999;
i = fix(Num/100); %取出百位数
j = fix(mod(Num,100)/10); %取出十位数
k = fix(mod(Num,10)); %取出个位数
flower = i.^3+j.^3+k.^3;
Num(find(flower == Num))
代码解析:以数字125为例(125不是水仙花数,仅作说明!)
i (取出百位数的过程):用 125/100 得到 1.25 ,然后fix()函数向零方向取整,得到 1
j (取出十位数的过程):用mod(125/100),取出余数 25 ,
然后用余数 25/10得到2.5 ,继续使用fix()取整函数取整得到 2
k (取出个位数的过程):用mod(125,10),得到余数 5 ,然后进行fix()取整,得到 5
说明:在这里使用了MatLab的取余数函数mod(),使用find()函数,找到满足条件的水仙花数
(3)对代码进行简化,使用两行代码求解水仙花数
源代码如下:
Num=100:999;
c = Num(find((fix(Num/100).^3+fix(mod(Num,100)/10).^3+fix(mod(Num,10)).^3)==Num))