Perfect numbers: Difference between revisions

Content added Content deleted
No edit summary
Line 938: Line 938:
tf = total == n;
tf = total == n;
end</lang>
end</lang>
Faster for large numbers:
Somewhat faster:
<lang MATLAB>function tf = isPerfect(n)
<lang MATLAB>function tf = isPerfect(n)
total = 0;
if n < 2
k = 1;
tf = false;
else
while k < n && total <= n
if ~mod(n, k)
total = 0;
total = total+k;
k = 1;
upperLimit = ceil(n/2);
while k <= upperLimit && total <= n
if ~mod(n, k)
total = total+k;
end
k = k+1;
end
end
k = k+1;
tf = total == n;
end
end
tf = total == n;
end</lang>
end</lang>