Skip to content
Advertisement

Closest divisible integer

Example.

int a = 254;
int b = 25;

int c = (closest integer to `a` that is divisible by `b`)

How can I find the integer c? The result of that example is c = 250.

Advertisement

Answer

There are two cases to consider:

  1. The closest integer that is less than or equal to a:

    int c1 = a - (a % b);
    
  2. The closest integer that is greater than a:

    int c2 = (a + b) - (a % b);
    

Then we need to check which is closer to a and return that:

int c;
if (a - c1 > c2 - a) {
    c = c2;
} else {
    c = c1;
}

So we could create a closestInteger() method like this:

static int closestInteger(int a, int b) {
    int c1 = a - (a % b);
    int c2 = (a + b) - (a % b);
    if (a - c1 > c2 - a) {
        return c2;
    } else {
        return c1;
    }
}

Example:

System.out.println(closestInteger(254, 25));
System.out.println(closestInteger(9, 5));

Output:

250
10
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement