matlab五位自幂数,如何利用matlab求出10000之内所有的水仙花数(如153=1^3+5^3+3^3,这种数称为...

匿名用户

1级

2017-06-06 回答

水仙花数只是自幂数的一种,严格来说三位数的3次幂数才成为水仙花数。

如153=1^3+5^3+3^3,这种数称为水仙花数。

若是10000以内,则必有四位数,四位自幂数不叫水仙花数,而叫做四叶玫瑰数。

现给一种简单的求水仙花数的代码,自创的。

x=0:9;

y=x;z=x;

[x,y,z]=meshgrid(x,y,z);

u=x.^3+y.^3+z.^3-100*x-10*y-z;

k=find(u==0&x~=0);

w=[x(k)';y(k)';z(k)']

sxhs=[100*w(1,:)+10*w(2,:)+w(3,:)]

w =

3 3 1 4

7 7 5 0

0 1 3 7

sxhs =

370 371 153 407

当然你也可以用循环来做

for m=100:999

m1=fix(m/100);

m2=rem(fix(m/10),10);

m3=rem(m,10);

if m==m1*m1*m1+m2*m2*m2+m3*m3*m3

disp(m)

end

end

输出结果为:

153 370 371 407

如果非要求四位数的四叶玫瑰数,有

for m=1000:9999

m1=fix(m/1000);

m2=rem(fix(m/100),10);

m3=rem(fix(m/10),10);

m4=rem(m,10);

if m==m1^4+m2^4+m3^4+m4^4

disp(m)

end

end

输出结果为: 1634 8208 9474

你也可以将后面的两步统一,即

for m=100:9999

m1=fix(m/1000);

m2=rem(fix(m/100),10);

m3=rem(fix(m/10),10);

m4=rem(m,10);

if (m==m1^4+m2^4+m3^4+m4^4)|m==m2^3+m3^3+m4^3

disp(m)

end

end

输出结果为:

153

370

371

407

1634

8208

9474

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值