java

Suma de números en rango con Java

En este post vamos a ver dos maneras de obtener la sumatoria en un rango de números; es decir, sumar todos los números que existen dentro de un rango, sin importar el orden usando Java.

Por ejemplo, la suma del rango 1, 3 es 6 ya que la suma queda: 1 + 2 + 3. De igual manera, sin importar el orden, la suma en el rango 3, 1 es 6.

Me parece que esto también se conoce como Sigma en matemáticas; pues bien, veamos cómo se hace con Java.

Sumatoria de números en rango con ciclo

Primero debemos obtener el menor y mayor número del rango, pues dijimos que el orden no debería importar. Una vez que los tenemos, declaramos la sumatoria en 0 y hacemos un ciclo que va desde el mínimo hasta el máximo.

Dentro de cada iteración, a la sumatoria le agregamos el valor actual del ciclo; comenzará en mínimo, luego en mímino + 1 y así hasta terminar.

Al finalizar el ciclo regresamos la suma.

See the gist on github.

La desventaja de esto es que entre mayor sea el número máximo, mayor tiempo tardará. Es decir, el problema no será resuelto en un tiempo constante.

Veamos la otra manera.

Usando matemáticas

En algún lugar escuché una historia sobre un matemático al que le indicaron que resolviera justamente este problema (era en su escuela y él era un niño), y que lo hizo como veremos a continuación.

Se supone que la sumatoria en un rango viene dada por la siguiente fórmula:

sumatoria = ((máximo + mínimo) * (máximo + 1 - mínimo)) / 2

Lo que en código quedaría de la siguiente manera:

See the gist on github.

Ahora el problema será resuelto en tiempo constante, pues no importa si el máximo es muy grande, serán simples operaciones en lugar de ciclos.

Notas

En este caso todo se hace con enteros, pero podrías usar otro tipo de dato para evitar un desbordamiento de búfer; por ejemplo un long o BigDecimal, todo depende de las necesidades de lo que estés desarrollando.

Te invito a leer más sobre Java, Matemáticas o Algoritmos en general.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Compartir
Publicado por
parzibyte

Entradas recientes

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

6 días hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

6 días hace

Imprimir PDF generado con HTML

Hoy vamos a ver programar la impresión de un PDF generado a partir de HTML…

1 semana hace

JavaScript: llenar select con arreglo

En este tutorial básico de JavaScript con HTML vamos a ver cómo llenar una lista…

2 semanas hace

Imprimir PDF a partir de URL

En este artículo se presenta una guía para imprimir un PDF a partir de una…

2 semanas hace

Imprimir PDF a partir de base64

En este post voy a enseñarte cómo imprimir un PDF a partir de su representación…

2 semanas hace

Esta web usa cookies.