## DEV Community is a community of 894,881 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

# Discussion on: Daily Challenge #130 - GCD Sum

Rustem Mustafin

Assume 0 < N <= M
Sum = N + M
GCD = G, so that N = x * G, M = y * G and x, y are relatively prime integers > 0
=>
Sum = x * G + y * G = G * (x + y)
Sum / G should also be integer, otherwise no answer
x + y = Sum / G
We need to take smallest x, so that x, y are relatively prime, so x = 1
=> x = 1 => N = G => M = Sum - G
Test:
1) Solve(12, 4) = 4, 8; GCD(4, 8) = 4; 4 + 8 = 12; OK
2) Solve(12, 5): 12 % 5 > 0 => No Answer; OK
3) Solve(10, 2) = 2, 8; GCD(2, 8) = 2; 2 + 8 = 10; OK

Midhet Sulemani

Reiterating to this logic in Swift:

``````import UIKit

func solve(sum: Int, hcf: Int) -> (Int, Int)? {
let x = 1
var y: Int!

y = sum - hcf

let verificationInt: Float = Float((hcf + y)/hcf)
let verificationSum = Int(verificationInt + 1)
if verificationSum % hcf == 0 {
return (hcf*x, y)
}
return nil
}

if let solution = solve(sum: 12, hcf: 5) {
print(solution)
} else {
print(-1)
}
``````