dev.to staff

Posted on

# Daily Challenge #294 - Sum and GCD Practice

Given the sum and greatest common divisor of two numbers, return those two numbers in ascending order. If the numbers do not exist, return -1 or your language's equivalent.

### Examples

Given sum = 12 and gcd = 4...

solve(12,4) = [4,8]. The two numbers 4 and 8 sum to 12 and have a gcd of 4.

solve(12,5) = -1. No two numbers exist that sum to 12 and have gcd of 5.

solve(10,2) = [2,8]. Note that [4,6] is also a possibility but we pick the one with the lower first element: 2 < 4, so we take [2,8].

### Tests

`solve(12,4)`
`solve(16,8)`
`solve(21,7)`

Good luck!

This challenge comes from KenKamau on CodeWars. Thank you to CodeWars, who has licensed redistribution of this challenge under the 2-Clause BSD License!

Want to propose a challenge idea for a future post? Email yo+challenge@dev.to with your suggestions!

## Top comments (3)

''

If there is a combination, minimum number = gcd itself, the other number = sum - gcd

``````const solve = (sum,gcd) => (sum-gcd) % gcd ? -1 : [gcd,sum-gcd]
``````

willsmart

Well spotted!

peter279k

Here is my simple solution with Python:

``````def solve(s,g):
answer = []
original_s = s
while s % g == 0:
if int(s / g) <= g:
answer.append(g)
break

s = int(s / g)

if s != original_s and len(answer) == 0:
answer.append(g)

if len(answer) == 0:
return -1

answer.append(original_s - answer[0])

return tuple(answer)
``````