MatLab 使用两行代码求解(100:999)的水仙花数

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))
posted @   YIMENG-0  阅读(668)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示