import
java.io.*;
import
java.util.*;
class
GFG
{
static
void
SieveOfEratosthenes(
int
largest, ArrayList<Integer> prime)
{
boolean
[] isPrime =
new
boolean
[largest +
1
];
Arrays.fill(isPrime,
true
);
for
(
int
p =
2
; p * p <= largest; p++)
{
if
(isPrime[p] ==
true
)
{
for
(
int
i = p *
2
; i <= largest; i += p)
isPrime[i] =
false
;
}
}
for
(
int
p =
2
; p <= largest; p++)
if
(isPrime[p])
prime.add(p);
}
static
long
countDivisorsMult(
int
[] arr,
int
n)
{
int
largest =
0
;
for
(
int
a : arr )
{
largest=Math.max(largest, a);
}
ArrayList<Integer> prime =
new
ArrayList<Integer>();
SieveOfEratosthenes(largest, prime);
Map<Integer,Integer> mp =
new
HashMap<>();
for
(
int
i =
0
; i < n; i++)
{
for
(
int
j =
0
; j < prime.size(); j++)
{
while
(arr[i] >
1
&& arr[i]%prime.get(j) ==
0
)
{
arr[i] /= prime.get(j);
if
(mp.containsKey(prime.get(j)))
{
mp.put(prime.get(j), mp.get(prime.get(j)) +
1
);
}
else
{
mp.put(prime.get(j),
1
);
}
}
}
if
(arr[i] !=
1
)
{
if
(mp.containsKey(arr[i]))
{
mp.put(arr[i], mp.get(arr[i]) +
1
);
}
else
{
mp.put(arr[i],
1
);
}
}
}
long
res =
1
;
for
(
int
it : mp.keySet())
res *= (mp.get(it) + 1L);
return
res;
}
public
static
void
main (String[] args) {
int
arr[] = {
2
,
4
,
6
};
int
n = arr.length;
System.out.println(countDivisorsMult(arr, n));
}
}