# Scala algorithm: In a range of numbers, count the numbers divisible by a specific integer

Published

## Algorithm goal

In a range $$5$$ to $$15$$, there are $$4$$ numbers divisible by $$n = 3$$: $$6$$, $$9$$, $$12$$ and $$15$$. Compute this for a generic $$n$$ (all non-negative numbers)

In Codility, there is a similar problem 'CountDiv'.

## Test cases in Scala

assert(countDivisibles(5 to 15, divisor = 3) == 4)
assert(countDivisibles(0 to Int.MaxValue, divisor = Int.MaxValue) == 2)
assert(countDivisibles(0 to 0, divisor = 3) == 1)
assert(countDivisibles(1 to Int.MaxValue, divisor = Int.MaxValue / 2) == 2)


## Algorithm in Scala

13 lines of Scala (compatible versions 2.13 & 3.0), showing how concise Scala can be!

## Explanation

A brute-force method will have a complexity that depends strictlyon the size of the input number.

Notice however that the count of numbers divisible by$$3$$, up to $$15$$, is $$5$$ ($$3, 6, 9, 12, 15$$). If we do that with respect to a range, we need to just take the difference between counts up to the end of the range, and the counts up to the start of the range (excluding the number itself). (this is Â© from www.scala-algorithms.com)

Also if the number $$0$$ is in range, count is increased by 1 because $$0$$ is divisible by all numbers (except $$0$$, of course).

## Scala concepts & Hints

1. ### Range

The (1 to n) syntax produces a "Range" which is a representation of a sequence of numbers.

assert((1 to 5).toString == "Range 1 to 5")

assert((1 to 5).reverse.toString() == "Range 5 to 1 by -1")

assert((1 to 5).toList == List(1, 2, 3, 4, 5))


# Scala Algorithms: The most comprehensive library of algorithms in standard pure-functional Scala

## How our 100 algorithms look

1. A description/goal of the algorithm.
2. An explanation with both Scala and logical parts.
3. A proof or a derivation, where appropriate.
4. Links to Scala concepts used in this specific algorithm, also unit-tested.
5. An implementation in pure-functional immutable Scala, with efficiency in mind (for most algorithms, this is for paid subscribers only).
6. Unit tests, with a button to run them immediately in our in-browser IDE.

### Study our 100 Scala Algorithms: 6 fully free, 100 published & 0 upcoming

Fully unit-tested, with explanations and relevant concepts; new algorithms published about once a week.

### Explore the 22 most useful Scala concepts

To save you going through various tutorials, we cherry-picked the most useful Scala concepts in a consistent form.

## Subscribe to Scala Algorithms

Maximize your Scala with disciplined and consistently unit-tested solutions to 100+ algorithms.

Use it from improving your day-to-day data structures and Scala; all the way to interviewing.