Where is the issue in my "while" statement?

5 ビュー (過去 30 日間)
Geo 2017 年 7 月 29 日

I want to evaluate the first integer evenly divisible by 3 and 5 using a Matlab code. My attempt is the following:
n=1;
while mod(n,5)~=0 && mod(n,3)~=0
n=n+1;
end
n
I'm new to Matlab and wondering where the issue here is. The code returns n=3 for some reason. I also want to extend this to find the first number evenly divisible by 1-10, for which I wrote the following while loop which also did not return the expected value. Where is my error?
n=1;
while mod(n,1:10)~=0
n=n+1;
end
n
Thank you.
3 件のコメント表示非表示 2 件の古いコメント
Walter Roberson 2017 年 7 月 29 日
found_solution = false;
n = 0;
while ~found_solution
n = n + 1;
found_solution = true;
for k = 1 : 10
if mod(n,k) ~= 0
found_solution = false;
break;
end
end
end
n

サインインしてコメントする。

回答 (2 件)

the cyclist 2017 年 7 月 29 日

In your second case, you are doing
mod(1,1)
then
mod(2,2)
then
mod(3,3)
and so on, because you are always incrementing n right along with k. Those mod functions are always equal to zero, so they always satisfy the while condition, so you get to n = 10.
0 件のコメント表示非表示 -1 件の古いコメント

サインインしてコメントする。

Teja Muppirala 2017 年 7 月 30 日
You were on the right track. This gives 2520:
n=1;
while any( mod(n,1:10)~=0 )
n=n+1;
end
n
When your conditional has more than one element, all of them must be true for it to evaluate as true. This will return 'B' and 'C'.
if [1 1 1 0]
disp('A')
else
disp('B')
end
if [1 1 1 1]
disp('C')
else
disp('D')
end

サインインしてコメントする。

Community Treasure Hunt

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

Start Hunting!