MATLAB: How to write an efficient script for perfect numbers

homework

I have to display the first 4 perfect numbers but am running into a problem. The way I am trying it takes very very long to reach the last value (8128 or whatever). Figured out how to post code (there's a freaking button for it lol…)
for k = 1:9000
factors = divisors(k);
factors(end) = [];
if sum(factors) == k
disp(k)
end

Best Answer

Try this:
for k = 1:9000
% factors = divisors(k);
D = 1:k ;
factors =D(rem(k,D)==0) ;
factors(end) = [] ;
if sum(factors) == k
disp(k)
end
end
Related Question