MATLAB Answers

Where is the issue in my "while" statement?

6 views (last 30 days)
Geo
Geo on 29 Jul 2017
Answered: Teja Muppirala on 30 Jul 2017
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 Comments

Geo
Geo on 29 Jul 2017
I managed to fix the first one; I used "and" but it should've been "or" instead. I'm still stuck on the second.
Geo
Geo on 29 Jul 2017
Revision also not working as expected:
n=1;
for k=1:10
while mod(n,k)~=0
n=n+1;
end
end
n
Walter Roberson
Walter Roberson on 29 Jul 2017
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

Sign in to comment.

Answers (2)

the cyclist
the cyclist on 29 Jul 2017
Edited: the cyclist on 29 Jul 2017
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 Comments

Sign in to comment.


Teja Muppirala
Teja Muppirala on 30 Jul 2017
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

  0 Comments

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by