I have a mistake in loops

2 visualizaciones (últimos 30 días)
sznailc
sznailc el 5 de Nov. de 2021
Editada: Stephen23 el 5 de Nov. de 2021
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 comentarios
sznailc
sznailc el 5 de Nov. de 2021
Editada: sznailc el 5 de Nov. de 2021
I have a test file that says, that not all possible pythagorean triples are displayed with N = 1000. Therefore I think there has to be a mistake with indexes that it skips some possible triples.
Stephen23
Stephen23 el 5 de Nov. de 2021
Editada: Stephen23 el 5 de Nov. de 2021
Note that if you change to
R = zeros(0,4);
then you can get rid of NONZEROS and RESHAPE.

Iniciar sesión para comentar.

Respuesta aceptada

Steven Lord
Steven Lord el 5 de Nov. de 2021
Does your problem ask you to find all Pythagorean triples whose elements sum to less than 1000 or all whose elements sum to less than or equal to 1000?
  1 comentario
sznailc
sznailc el 5 de Nov. de 2021
wow, thank you, edited to a+b+c <= N. I couldn't tell what triple is missing and didn't know that it might be 1000

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Productos


Versión

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by