**You are now following this question**

- You will see updates in your followed content feed.
- You may receive emails, depending on your communication preferences.

# Test if input number is divisible by 3.

62 views (last 30 days)

Show older comments

I want to write a program to request a number from the user, and do one of two things:

- If the number is divisible by three, output that it is divisible by 3 and state the quotient.
- If the number is NOT divisible by three, state this, and report back the quotient and remainder.

How would I go about this?

##### 17 Comments

Walter Roberson
on 9 Aug 2022

And watch out for the user entering things that are not numeric scalars.

Bozza
on 9 Aug 2022

Edited: Bozza
on 9 Aug 2022

I have done this so far, just can't seem to find how to display the things I want it to:

prompt = "Input a number:"

x = input(prompt)

%check x is whole positive number

if mod(x,1) == 0

disp('Your number is valid.')

elseif mod(x,1) ~= 0

disp('Your number is not valid')

%test if x is divisible by 3

divide=x/3

%mod function to find the remainder

remainder = mod(x,3)

%output

if ; disp('Your number is divisible by three, this many times: .')

elseif disp('Your number does not divide equally into 3, it can divide into three this many times: , with remainder: ')

Walter Roberson
on 9 Aug 2022

mod(x,1) == 0

That will calculate and display a result, but will not use that result to make any decision.

if ; disp('Your number is divisible by three, this many times: .')

You need to give a condition after the if

If remainder is what?

disp('Your number is divisible by three, this many times: .')

I recommend that you investigate fprintf(()

Bozza
on 9 Aug 2022

I have fixed a few things, however, I can't seem to get fprintf(() to work.

prompt = "Input a number:";

x = input(prompt);

%check x is whole positive number

y=mod(x,1);

if y == 0;

disp('Your number is valid.');

elseif y ~= 0;

disp('Your number is not valid');

%I want to make it so that if this elseif is true, it asks the question

%again

end

%test if x is divisible by 3

divide=x/3

%mod function to find the remainder

remainder = mod(x,3)

%output

if y == 0 fprintf('Your number is divisible by three, this many times: %d\n', divide && remainder);

elseif y ~= 0 fprintf('Your number does not divide equally into 3, it can divide into three this many times: %d\n', divide, 'with remainder: %d\n', remainder);

end

Rik
on 9 Aug 2022

If you want to repeat something an unknown number of times, you may want to consider a while loop.

Also, if you want something to happen in your else, you don't need to use elseif. In your code you test whether y is 0, and if it isn't you test whether y is not equal to 0. The only thing this case do is cause edge cases. You should alway have an else branch, even if you don't expect that to ever occur.

y=[0 1];

if y==0

disp('y is 0')

elseif y~=0

disp('y is not 0')

else

disp('y neither 0, nor not 0')

end

y neither 0, nor not 0

Walter Roberson
on 9 Aug 2022

if y == 0

fprintf('Your number is divisible by three, this many times: %d\n', divide);

else

fprintf('Your number does not divide equally into 3, it can divide into three this many times: %d with remainder: %d\n', divide, remainder);

end

Bozza
on 9 Aug 2022

Thank you all for the help so far. At the moment it sort of works, the problem is that it always states that the number is divisible by 3, even if it isn't. Is there something I can change the divide x/3 line to that finds the amount of times 3 equally divides into the number?

prompt = "Input a number:";

x = input(prompt);

%check x is whole positive number

y=mod(x,1);

if y == 0;

disp('Your number is valid.');

elseif y ~= 0;

disp('Your number is not valid');

%I want to make it so that if this elseif is true, it asks the question

%again

end

%test if x is divisible by 3

divide=x/3; %NEED TO CHANGE this to something that only finds the amount of times 3 equally divides into x.

%mod function to find the remainder

remainder = mod(x,3);

%output

if y == 0

fprintf('Your number is divisible by three, this many times: %d\n', divide);

else

fprintf('Your number does not divide equally into 3, it can divide into three this many times: %d with remainder: %d\n', divide, remainder);

end

Walter Roberson
on 9 Aug 2022

if y == 0

Review your code to find out what you have assigned to y

Bozza
on 9 Aug 2022

My code works now, only problem is that the divide output is not a whole number. I want it to output the quotient and remainder as whole numbers. Is there a function that can do this?

prompt = "Input a number:";

x = input(prompt);

%check x is whole positive number

y=mod(x,3);

%test if x is divisible by 3

divide=x/3;

%mod function to find the remainder

remainder = mod(x,3);

%output

if y == 0

fprintf('Your number is divisible by three, this many times: %d\n', divide);

else

fprintf('Your number does not divide equally into 3, it can divide into three this many times: %d with remainder: %d\n', divide, remainder);

end

Walter Roberson
on 9 Aug 2022

%check x is whole positive number

y=mod(x,3);

Does that line test if x is a whole positive number?

Bjorn Gustavsson
on 9 Aug 2022

Sam Chak
on 9 Aug 2022

Edited: Sam Chak
on 9 Aug 2022

Hi @Bozza

I think it is called modular arithmetic in mathematics. But I did not learn this in high school. I remember the Math Teacher discussed something similar on the topic of Prime Numbers. Didn't understand why it is not taught.

### Answers (1)

Bjorn Gustavsson
on 9 Aug 2022

Have a look at the help and documentation for while. Also from the question I guess that you're reasonably new to programming. If that's the case have a walk through the on-ramp material. That is designed to get you up to speed with programming, and supposedly no other way should be better than you browsing through that focusing on the parts that are of most interest and relevance to you.

HTH

##### 0 Comments

### See Also

### Community Treasure Hunt

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

Start Hunting!**An Error Occurred**

Unable to complete the action because of changes made to the page. Reload the page to see its updated state.

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list:

## How to Get Best Site Performance

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

### Americas

- América Latina (Español)
- Canada (English)
- United States (English)

### Europe

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)

### Asia Pacific

- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)