例如10进制的3位自恋数
153=1的三次方+5的三次方+3的三次方
同学你好,函数供参考,为了调用,可以写个main函数
function [S, R]= nacissistic(base, n)
A = cell(1,n);
[A{:}] = ndgrid(0:base-1);
for i = 1:n
A{1,i} = A{1,i}(:);
end
A = cell2mat(A);%所有可能的n位base进制数
A(A(:,1)==0,:) = [];%去除最高位为0的数
B = sum(A.^n,2);%每个数的位置依次n次方相加,表示成十进制
N = repmat(n-1:-1:0,size(A,1),1);% 幂指标
C = sum(A.*base.^N,2);%每个n位base进制数表示成十进制
p = B==C;
S = C(p,1); % 这个是10进制下的结果
R = A(p,:); % 这个是base进制的行向量,每一行代表一个数,列代表位数
end
函数调用示例:
比如10进制,3位数:
[S, R]= nacissistic(10, 3)
结果:
S =
370
371
153
407
R =
3 7 0
3 7 1
1 5 3
4 0 7
可见还是不错的
再来一个,10进制,4位数
[S, R]= nacissistic(10, 4)
结果:
S =
1634
9474
8208
R =
1 6 3 4
9 4 7 4
8 2 0 8
再来一个陌生的,11进制,3位数
[S, R]= nacissistic(11, 3)
结果就很好玩,你应该看的是R每一行的值,每一行都是一个11进制的数(S只是11进制的数转换成10进制后的值,看不出什么名堂)
S =
1280
126
1216
1161
370
855
R =
10 6 4
1 0 5
10 0 6
9 6 6
3 0 7
7 0 8
好有意思的事情啊,有帮助还望题主给个采纳支持一下答主答题哦,谢谢啦