阿姆斯特朗数是一个数字,它是它自己的数字的总和,每个数字都提高到数字的数量。
我的代码如下所示,用于查找 7 位阿姆斯壮数,之所以使用bsxfun
它是因为它非常快,但它只接受三个参数(Mathematica 的类似函数Outer
可以接受多个参数)。如何使我的代码更紧凑?
tic
m1=(1:9).^7;
m=(0:9).^7;
r1=bsxfun(@plus, m1', m);
r2=bsxfun(@plus, r1, reshape(m,1,1,[]));
r3=bsxfun(@plus, r2, reshape(m,1,1,1,[]));
r4=bsxfun(@plus, r3, reshape(m,1,1,1,1,[]));
r5=bsxfun(@plus, r4, reshape(m,1,1,1,1,1,[]));
r6=bsxfun(@plus, r5, reshape(m,1,1,1,1,1,1,[]));
r7= permute(r6, 7:-1:1);
A=reshape((1e6:1e7-1), size(r7));
A(A==r7)
toc
(*
ans =
1741725
4210818
9800817
9926315
*)