import
java.util.*;
class
GFG
{
static
void
SieveOfEratosthenes(
boolean
prime[],
int
p_size)
{
prime[
0
] =
false
;
prime[
1
] =
false
;
for
(
int
p =
2
; p * p <= p_size; p++)
{
if
(prime[p])
{
for
(
int
i = p *
2
; i < p_size; i += p)
{
prime[i] =
false
;
}
}
}
}
static
void
sumProdOfPrimeFreq(
char
[] s)
{
boolean
[] prime =
new
boolean
[s.length +
1
];
Arrays.fill(prime,
true
);
SieveOfEratosthenes(prime, s.length +
1
);
int
i, j;
Map<Character, Integer> mp =
new
HashMap<>();
for
(i =
0
; i < s.length; i++)
{
mp.put(s[i], mp.get(s[i]) ==
null
?
1
: mp.get(s[i]) +
1
);
}
int
sum =
0
, product =
1
;
for
(Map.Entry<Character, Integer> it : mp.entrySet())
{
if
(prime[it.getValue()])
{
sum += it.getValue();
product *= it.getValue();
}
}
System.out.print(
"Sum = "
+ sum);
System.out.println(
"\nProduct = "
+ product);
}
public
static
void
main(String[] args)
{
String s =
"geeksforgeeks"
;
sumProdOfPrimeFreq(s.toCharArray());
}
}