import
java.util.*;
class
GFG {
static
Vector<Integer> prime_factors(
int
num)
{
Vector<Integer> res =
new
Vector<Integer>();
while
(num %
2
==
0
) {
res.add(
2
);
num /=
2
;
}
for
(
int
i =
3
; i * i <= num; i +=
2
) {
while
(num % i ==
0
) {
res.add(i);
num /= i;
}
}
if
(num >
1
) {
res.add(num);
}
return
res;
}
static
int
solve(
int
arr[],
int
n,
int
X)
{
HashMap<Integer, Integer> mp1 =
new
HashMap<Integer, Integer>();
Vector<Integer> cnt;
for
(
int
i =
0
; i < n; i++) {
cnt = prime_factors(arr[i]);
for
(
int
j =
0
; j < cnt.size(); j++) {
mp1.put(cnt.get(j), mp1.getOrDefault(cnt.get(j),
0
) +
1
);
}
cnt.clear();
}
Vector<Integer> res = prime_factors(X);
HashMap<Integer, Integer> mp2 =
new
HashMap<Integer, Integer>();
for
(
int
i =
0
; i < res.size(); i++) {
mp2.put(res.get(i), mp2.getOrDefault(res.get(i),
0
) +
1
);
}
int
ans =
0
;
for
(Map.Entry<Integer, Integer> entry : mp2.entrySet()) {
if
(entry.getValue() > mp1.getOrDefault(entry.getKey(),
0
)) {
ans += (entry.getValue() - mp1.getOrDefault(entry.getKey(),
0
));
}
}
return
ans;
}
public
static
void
main(String[] args)
{
int
arr[] = {
6
,
4
,
3
};
int
N = arr.length;
int
X =
35
;
int
arr2[] = {
6
,
7
,
8
,
9
,
3
};
int
M = arr2.length;
int
Y =
15
;
int
arr3[] = {
4
,
8
,
19
,
23
};
int
O = arr3.length;
int
Z =
66
;
System.out.println(solve(arr,N,X));
System.out.println(solve(arr2,M,Y));
System.out.println(solve(arr3,O,Z));
}
}