How do I make a function that checks the divisibility of a given number, n, by 3, 5, 7, and 11.

I am trying to write a function div - divisibility(n) that checks the divisibility of a given number input n, by 3, 5, 7, and 11 for a hw problem. The problem requires that my output be a logical vector output of 4 elements corresponding to the divisibility by 3, 5, 7 and 11, respectively. For example, the output of divisibility(14) would be [0 0 1 0]. I have figured out how to write a function that gives a single output, but I do not know how to write a function that outputs a logical vector.
All I have so far is:
function div = divisibility(a)
div = rem(a,3)
end

 Accepted Answer

This works:
divisibility = @(x) rem(x, [3 5 7 11]) == 0;
div = divisibility(14)
producing:
div =
0 0 1 0

4 Comments

When you run the function like this, you produce both the div logical array and an ans logical array. How do you get rid of the ans logical array

Sign in to comment.

More Answers (1)

22 is divisible by 11. The logical command makes all nonzeros into ones and the tilde (~) then takes the not of the logical. What you're left with is a one wherever the remainder is zero.
a = 22;
div = ~logical(rem(a,[3 5 9 11 44]))

Categories

Community Treasure Hunt

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

Start Hunting!