Soma de 1 até 1000

3 respostas
programaçãojava
Dieggo

Alguém poderia me ajudar a melhorar o código conforme segue abaixo ou está de acordo?

package br.com.caelum.page33;

public class ImprimeX {

public static void main(String[] args) {

	// variavel soma declarada e inicializada
	long soma = 0;

	// enquanto i <= 1000 incrementa na variável soma
	for (int i = 1; i <= 1000; i++) {
		soma += i;
	}

	// Quando finalizado o processo de incremento é calculada a soma
	System.out.println("A Soma de 1 até 1000 é: " + soma);

}

}

3 Respostas

A

O código está correto, se está aprendendo, está no caminho certo.

Há classes mais avançadas no java que poderiam facilitar sua vida nesse caso.
Por exemplo, quando quer lidar com intervalos numéricos (de 1 a 1000 no seu caso), você pode usar o método range ou rangeClosed da classe IntStream. Seu exemplo ficaria:

long soma = IntStream.rangeClosed(1, 1000).sum();

Em termos de complexidade, seu código tem complexidade O(N) pois tem de percorrer os 1000 elementos para calcular a soma. Mas em matemática, você pode obter esse resultado com a fórmula de P.A. :

long soma = Math.round ((1 + 1000) * (1000 / 2.0));

Isso faz seu código ter complexidade O(1), ou seja, nao importa o tamanho do intervalo que queira contar, vai sempre executar em tempo “constante”.

Juliano_s

Cara é simples

soma de a ate n:
((a+n)(n-a+1))/2

Dieggo

Obrigado pela explicação.

Criado 21 de fevereiro de 2018
Ultima resposta 21 de fev. de 2018
Respostas 3
Participantes 3