matlab编写函数文件找出100内的所有完数

matlab编写函数文件找出100内的所有完数
2025-03-09 23:20:44
推荐回答(1个)
回答1:

n = 100; 
N = 1:n;
A = repmat(N,n,1);
C = A'./A;                                       % 得到逐元素相除的商
C(ceil(C)>C) = 0;                                % 将商为小数的元素置0 
F1 = arrayfun(@(x) C(C(x,:)>0),N,'un',false);          % 去掉0元素  
F2 = cellfun(@cumsum,F1,'un',false);                   % 逐元素累加 
F3 = arrayfun(@(x) ismember(x,F2{x}),N,'un',false);    % 找和等于序号的行
RR = N(cell2mat(F3));                                  % 去掉空的行  
RR(RR==1) = []                                         % 排除结果1

RR =

     6    24    28