import
java.util.*;
class
GFG {
static
boolean
isPrime(
int
n) {
int
i;
if
(n <=
1
)
return
false
;
if
(n <=
3
)
return
true
;
if
(n %
2
==
0
|| n %
3
==
0
) {
return
false
;
}
for
(i =
5
; i * i <= n; i +=
6
) {
if
(n % i ==
0
|| n % (i +
2
) ==
0
) {
return
false
;
}
}
return
true
;
}
static
int
findSubarraySum(
int
arr[],
int
n,
int
K)
{
HashMap<Integer, Integer> prevSum =
new
HashMap<Integer, Integer>();
int
res =
0
;
int
currsum =
0
;
for
(
int
i =
0
; i < n; i++) {
currsum += arr[i];
if
(currsum == K) {
res++;
}
if
(prevSum.containsKey(currsum - K)) {
res += (prevSum.get(currsum - K));
}
if
(prevSum.containsKey(currsum))
prevSum.put(currsum, prevSum.get(currsum) +
1
);
else
prevSum.put(currsum,
1
);
}
return
res;
}
static
void
countSubarray(
int
arr[],
int
n,
int
K) {
for
(
int
i =
0
; i < n; i++) {
if
(isPrime(arr[i])) {
arr[i] =
1
;
}
else
{
arr[i] =
0
;
}
}
System.out.print(findSubarraySum(arr, n, K));
}
public
static
void
main(String[] args) {
int
arr[] = {
1
,
2
,
3
,
4
};
int
K =
2
;
int
N = arr.length;
countSubarray(arr, N, K);
}
}