Why doesn't the for loop work?
古いコメントを表示
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? :(
採用された回答
その他の回答 (1 件)
Bora Eryilmaz
2023 年 1 月 6 日
編集済み: Bora Eryilmaz
2023 年 1 月 6 日
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
カテゴリ
ヘルプ センター および File Exchange で Loops and Conditional Statements についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!