Why doesn't the for loop work?
Mostrar comentarios más antiguos
x=1:16;
p=isprime(x);
for i=1:16
if p(i)==1
p(i)=i;
end
end
A=reshape(p,4,4);
A=A';
display(A);
I want to keep only the prime numbers in vector and to replace the others with 0s. It seems so simple yet it's not working, what's to be done? :(
Respuesta aceptada
Más respuestas (1)
Bora Eryilmaz
el 6 de En. de 2023
Editada: Bora Eryilmaz
el 6 de En. de 2023
p = isprime(p) gives you a logical vector, similar to
p = [true true false true]
When you try to assign i to p(i) it converts the value of i to a logical value; it does not assign i to p(i). See for example
p(3) = 3
p(3) did not become 3, it became the logical equivalent of 3, which is true, a.k.a. 1.
Instead you can do as simple assignment of 0 to elements of x that are not prime numbers:
x = 1:16;
p = isprime(x);
x(~p) = 0
1 comentario
Emilia
el 6 de En. de 2023
Categorías
Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!