Volver a los desafíos
Intermedio 0 resueltos 0% de aceptación

Sum of Primes Below a Limit

Add all primes strictly below a limit.

Lo que aprenderás

  • Find all primes below a limit with a sieve
  • Mark multiples instead of testing each number
  • Sum values efficiently

Problema

Ver traducción

A prime is an integer greater than 1 divisible only by 1 and itself. Add every prime strictly smaller than limit. The limit itself is excluded even when it is prime.

Implement prime_sum(limit).

Input

limit: The exclusive upper bound.

Output

Return the sum of the eligible primes, or 0 when none exist.

Restricciones

0 ≤ limit ≤ 2,000,000. Return the sum using a signed 64-bit integer.

Ejemplos

Ejemplo 1
Entrada:
limit = 12

Salida esperada:
expected = 28
Entrada:
long long limit = 12;

Salida esperada:
long long expected = 28;
Entrada:
long limit = 12;

Salida esperada:
long expected = 28;

Explicación

The primes below 12 are 2, 3, 5, 7, and 11; their sum is 28.

Ejemplo 2
Entrada:
limit = 2

Salida esperada:
expected = 0
Entrada:
long long limit = 2;

Salida esperada:
long long expected = 0;
Entrada:
long limit = 2;

Salida esperada:
long expected = 0;

Explicación

There are no primes strictly below 2.

Cómo abordarlo

Inténtalo primero por tu cuenta y luego abre las pistas una a una.

Pista 1

The main cost is finding primes efficiently; naive divisibility checks for every number will be too slow.

Pista 2

Use a sieve-like approach to mark composites, then add the numbers that remain unmarked and below the limit.

Pista 3

Remember that the limit itself is excluded, even when it is prime, and small limits may contribute nothing.

Complejidad esperada

O(limit log log limit) time, O(limit) extra space

Referencias

Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.