import
java.io.*;
class
GFG {
public
static
void
main(String[] args)
{
int
[] arr = {
2
,
6
,
3
,
4
,
8
,
9
};
int
res = maxAbsDiff(arr);
System.out.println(
"Maximum absolute difference : "
+ res);
}
public
static
int
maxAbsDiff(
int
[] arr)
{
int
n = arr.length;
int
maxDiff =
0
;
int
minRatioSum = Integer.MAX_VALUE;
for
(
int
i =
0
; i < n; i++) {
for
(
int
j = i +
1
; j < n; j++) {
int
a = arr[i];
int
b = arr[j];
int
ratioSum =
0
;
int
[] temp = getRatio(a, b);
ratioSum = temp[
0
] + temp[
1
];
if
(ratioSum < minRatioSum) {
minRatioSum = ratioSum;
maxDiff = Math.abs(a - b);
}
else
if
(ratioSum == minRatioSum) {
maxDiff = Math.max(maxDiff,
Math.abs(a - b));
}
}
}
return
maxDiff;
}
public
static
int
[] getRatio(
int
a,
int
b)
{
int
gcd = getGCD(a, b);
int
d1 = a / gcd;
int
d2 = b / gcd;
int
[] ans = { d1, d2 };
return
ans;
}
public
static
int
getGCD(
int
i1,
int
i2)
{
if
(i1 == i2)
return
i1;
if
(i1 > i2)
return
getGCD(i1 - i2, i2);
return
getGCD(i1, i2 - i1);
}
}