#include <stdio.h>
int
max(
int
num1,
int
num2)
{
return
(num1 > num2) ? num1 : num2;
}
int
min(
int
num1,
int
num2)
{
return
(num1 > num2) ? num2 : num1;
}
int
gcd(
int
a,
int
b)
{
int
result = min(a, b);
while
(result > 0) {
if
(a % result == 0 && b % result == 0) {
break
;
}
result--;
}
return
result;
}
int
MaxGCD(
int
a[],
int
n)
{
int
Prefix[n + 2];
int
Suffix[n + 2];
Prefix[1] = a[0];
for
(
int
i = 2; i <= n; i += 1)
Prefix[i] = gcd(Prefix[i - 1], a[i - 1]);
Suffix[n] = a[n - 1];
for
(
int
i = n - 1; i >= 1; i -= 1)
Suffix[i] = gcd(Suffix[i + 1], a[i - 1]);
int
ans = max(Suffix[2], Prefix[n - 1]);
for
(
int
i = 2; i < n; i += 1)
ans = max(ans, gcd(Prefix[i - 1], Suffix[i + 1]));
return
ans;
}
int
main()
{
int
a[] = { 6, 7, 8 };
int
n =
sizeof
(a) /
sizeof
(a[0]);
printf
(
"%d"
, MaxGCD(a, n));
return
0;
}