## The challenge#

Count the number of divisors of a positive integer `n`.

Random tests go up to `n = 500000`.

## Examples#

``````numberOfDivisors(4)  == 3 // 1, 2, 4
numberOfDivisors(5)  == 2 // 1, 5
numberOfDivisors(12) == 6 // 1, 2, 3, 4, 6, 12
numberOfDivisors(30) == 8 // 1, 2, 3, 5, 6, 10, 15, 30
``````

## The solution in Java code#

Option 1:

``````public class FindDivisor {

public long numberOfDivisors(int n) {
long counter = 0;
for(int i=1; i<=n; i++){
if(n % i == 0){
counter++;
}
}
return counter;
}
}
``````

Option 2:

``````import java.util.stream.IntStream;
public class FindDivisor {
public long numberOfDivisors(int n) {
return IntStream.range(1, n+1).filter(i -> n%i==0).count();
}
}
``````

Option 3:

``````import java.util.stream.*;

public class FindDivisor {

public long numberOfDivisors(int n) {
return IntStream.rangeClosed(1, n).filter(x -> n % x == 0).count();
}

}
``````

## Test cases to validate our solution#

``````import static org.junit.Assert.assertEquals;
import org.junit.Test;

public class DividerTests {

FindDivisor fd = new FindDivisor();

@Test
public void fourTest() {
assertEquals("Sould return 3 if the parameter equals 4", 3, fd.numberOfDivisors(4));
}

@Test
public void fiveTest() {
assertEquals("Sould return 2 if the parameter equals 5", 2, fd.numberOfDivisors(5));
}

@Test
public void twelveTest() {
assertEquals("Sould return 6 if the parameter equals 12", 6, fd.numberOfDivisors(12));
}

@Test
public void thirtyTest() {
assertEquals("Sould return 8 if the parameter equals 30", 8, fd.numberOfDivisors(30));
}
}
``````