using
System;
using
System.Collections.Generic;
class
GFG{
static
void
SieveOfEratosthenes(
int
n, HashSet<
int
> allPrimes)
{
bool
[]prime =
new
bool
[n + 1];
for
(
int
i = 0; i < n + 1; i++)
prime[i] =
true
;
for
(
int
p = 2; p * p <= n; p++) {
if
(prime[p] ==
true
) {
for
(
int
i = p * p; i <= n; i += p)
prime[i] =
false
;
}
}
for
(
int
p = 2; p <= n; p++)
if
(prime[p])
allPrimes.Add(p);
}
static
int
countInterestingPrimes(
int
n)
{
HashSet<
int
> allPrimes =
new
HashSet<
int
>();
SieveOfEratosthenes(n, allPrimes);
HashSet<
int
> intersetingPrimes =
new
HashSet<
int
>();
List<
int
> squares =
new
List<
int
>()
, quadruples =
new
List<
int
>();
for
(
int
i = 1; i * i <= n; i++) {
squares.Add(i * i);
}
for
(
int
i = 1; i * i * i * i <= n; i++) {
quadruples.Add(i * i * i * i);
}
foreach
(
int
a
in
squares) {
foreach
(
int
b
in
quadruples) {
if
(allPrimes.Contains(a + b))
intersetingPrimes.Add(a + b);
}
}
return
intersetingPrimes.Count;
}
public
static
void
Main(String[] args)
{
int
N = 10;
Console.Write(countInterestingPrimes(N));
}
}