I have a mistake in loops
Show older comments
Hello, I have somewhere a mistake that if N = 1000 the output misses some lines (don't know which), so I suppose there's a mistake somewhere in for loops. It works correctly with N = 50, 100, 500.
function [R, I] = problem2B(N)
I = 0;
for a = 3:N
for b = a:N
for c = b:N
if (a^2 + b^2) == c^2 && a+b+c < N
R(I+1, :) = [a+b+c, a, b, c];
I = I + 1;
elseif N < 12
R = zeros(4, 1);
end
end
end
end
if N <= 50
R = reshape(nonzeros(R), I, 4);
else
R = sortrows(R, 1);
end
end
3 Comments
What exactly do you mean when you say it misses rows?
[R I] = problem2B(100)
[R I] = problem2B(1000)
function [R, I] = problem2B(N)
I = 0;
for a = 3:N
for b = a:N
for c = b:N
if (a^2 + b^2) == c^2 && a+b+c < N
R(I+1, :) = [a+b+c, a, b, c];
I = I + 1;
elseif N < 12
R = zeros(4, 1);
end
end
end
end
if N <= 50
R = reshape(nonzeros(R), I, 4);
else
R = sortrows(R, 1);
end
end
Note that if you change to
R = zeros(0,4);
then you can get rid of NONZEROS and RESHAPE.
Accepted Answer
More Answers (0)
Categories
Find more on Variables in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!