using
System;
public
class
GFG{
public
static
long
GCD(
long
a,
long
b)
{
if
(b != 0)
return
a;
return
GCD(b, a % b);
}
public
static
long
find(
long
[] prefix,
long
[] suffix,
long
i,
long
n)
{
if
(i == 0) {
return
suffix[1];
}
if
(i == n - 1) {
return
prefix[n - 2];
}
else
{
return
GCD(prefix[i - 1], suffix[i + 1]);
}
}
public
static
long
findCount(
long
[] arr,
long
n)
{
long
i;
long
Count = 0;
long
[] prefix =
new
long
[n];
long
[] suffix =
new
long
[n];
prefix[0] = arr[0];
suffix[n - 1] = arr[n - 1];
for
(i = 1; i < n; i++) {
prefix[i] = GCD(prefix[i - 1], arr[i]);
}
for
(i = n - 2; i >= 0; i--) {
suffix[i] = GCD(suffix[i + 1], arr[i]);
}
for
(i = 0; i < n; i++) {
if
(find(prefix, suffix, i, n) > 1)
Count++;
}
return
Count;
}
static
public
void
Main (){
long
[] arr = { 3, 6, 9 };
long
N = arr.Length;
Console.WriteLine(findCount(arr, N));
}
}