水仙花数只是自幂数的一种,严格来说三位数的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
温馨提示:答案为网友推荐,仅供参考