Legendre prime counting function: Difference between revisions
Content deleted Content added
Removed memoization from C++ solution |
Removed memoization from Java solution |
||
Line 360: | Line 360: | ||
private List<Integer> primes; |
private List<Integer> primes; |
||
private Map<Integer, Map<Integer, Integer>> phiCache = new HashMap<>(); |
|||
public LegendrePrimeCounter(int limit) { |
public LegendrePrimeCounter(int limit) { |
||
Line 376: | Line 375: | ||
if (a == 0) |
if (a == 0) |
||
return x; |
return x; |
||
if (a == 1) |
|||
Map<Integer, Integer> map = phiCache.computeIfAbsent(x, k -> new HashMap<>()); |
|||
return x - (x >> 1); |
|||
int pa = primes.get(a - 1); |
|||
if (x <= pa) |
|||
return 1; |
|||
return phi(x, a - 1) - phi(x / primes.get(a - 1), a - 1); |
|||
return result; |
|||
} |
} |
||