using
System;
using
System.Collections.Generic;
class
GFG{
static
List<
int
> SieveOfEratosthenes(
int
M)
{
bool
[]isPrime =
new
bool
[M + 1];
for
(
int
i = 0; i < M + 1; i++)
isPrime[i] =
true
;
for
(
int
p = 2; p * p <= M; p++)
{
if
(isPrime[p] ==
true
)
{
for
(
int
i = p * p; i <= M; i += p)
{
isPrime[i] =
false
;
}
}
}
List<
int
> prime =
new
List<
int
>();
for
(
int
i = 2; i <= M; i++)
{
if
(isPrime[i])
{
prime.Add(i);
}
}
return
prime;
}
static
int
check(
int
[]A,
int
P,
int
N)
{
if
(A[0] % P == 0)
return
0;
for
(
int
i = 1; i < N; i++)
if
(A[i] % P !=0)
return
0;
if
(A[N - 1] % (P * P) == 0)
return
0;
return
1;
}
static
int
checkIrreducibilty(
int
[]A,
int
N)
{
int
M = -1;
for
(
int
i = 0; i < N; i++)
{
M = Math.Max(M, A[i]);
}
List<
int
> primes = SieveOfEratosthenes(M + 1);
for
(
int
i = 0; i < primes.Count; i++)
{
if
(check(A, primes[i], N) == 1)
{
return
1;
}
}
return
0;
}
public
static
void
Main()
{
int
[]A = { 4, 7, 21, 28 };
int
N = A.Length;
Console.Write(checkIrreducibilty(A, N));
}
}