# Find the next divisor without remainder [closed]

I divide a value and if the remainder is not 0 I want the closest possible divisor without remainder.

Example:

I have:
$100 \% 48 = 4$

Now I am looking for the next value which divide 100 wihtout remainder. Result: $50$
$100 \% 50 = 0%$

Just another example:
$14 \% 6 = 2$
Result $7$
$14 \% 7 = 0$

Does anyone know how to calculate this?

• It seems that you know how to calculate this. Are you looking for some other way to calculate it? – vadim123 Mar 17 '14 at 15:20
• No, I don´t know. My "results" are just guessed. – Viatorus Mar 17 '14 at 15:22
• If there were an easy way of doing this in general we'd be able to factorise large numbers using the method. And no-one knows an easy way to do that. – Mark Bennet Mar 17 '14 at 16:12
• Isn't there an easy way to do this? I'm confused. – bozdoz Sep 13 '18 at 19:28

## 2 Answers

1. Calculate 100%48. If the answer is zero, stop. Otherwise:
2. Calculate 100%49. If the answer is zero, stop. Otherwise:
3. Calculate 100%50. If the answer is zero, stop. Otherwise:

etc.

• doing so you'll find an integer $x \text{ such that } x \equiv 0 \text{ mod } M$, but not the nearest...e.g maybe it was $47$ – sirfoga Mar 17 '14 at 15:26
• Okay, well I hoped there is a better way to calculate this. But thank you anyway. – Viatorus Mar 17 '14 at 15:26
• If you want the nearest and allow those less than 48, then try: 48, 49, 47, 50, 46, 51, 45, etc. – vadim123 Mar 17 '14 at 15:29

I had the same question when I found this, so here's some sample (python) code that would find the nearest divisor with no remainder.

Num = 636         # Numerator we are seeking to divide with no remainder
Den = 8           # Initial denominator
max_iters = 15    # caps the maximum loops
iters = 1         # initialize counter
Deni = Dend = Den # vars for searching increasing and decreasing denominators

while Num%Den != 0:
Deni +=1                 # searching increased vals
if Dend > 0 : Dend -=1   # searching decreased vals, but check 0 condition
if Num%Dend ==0:         # found a 0 remainder denominator
Den = Dend           # assign found denominator
break
elif Num%Deni ==0:       # found a 0 remainder denominator
Den = Deni           # assign found denominator
break
elif iters >= max_iters: # check loop count
break
iters+=1


Not as clean as a built in function, but hopefully it helps the next person.