Imprimir a soma de 1 até 1000 [RESOLVIDO]

32 respostas
B

Como faço para imprimir a soma de 1 até 1000:

1+2+3+4+5…+99+100…

32 Respostas

J

Em Ruby

1000.times {|v| puts v}

Em Java: use o laço FOR

P

Para somar números consecutivos, soma-se o primeiro com o último e multiplica-se por métade dos números a somar

int min = 1;
int max = 1000;

int soma = (min + max) * ((max - min + 1) / 2)
V

Exato.

Nada mais, nada menos que a famosa soma dos termos de uma progressão aritmética.
Matéria do segundo grau.

Agora, se vc quer imprimir efetivamente a continha, aí sim, use o laço for.

B

O que estou procurando é =ou- isto aqui:

public static void main (String [] args)

{

for (int x = 0, y = 0; x <= 1000; y++){

x = x + y;

System.out.println(x);

}

}
V

E por que não é exatamente isso aí?

C

int resultado = 0; for (int x = 1; x <= 1000; x++) resultado += x;

B

O sistema teria que imprimir:

0=0+0
1=0+1
3=1+2
6=3+3
10=6+4
15=10+5
até
…=…+1000

uma soma acumulada.

C

int resultado = 0; int ultimoValor; for (int x = 0; x <= 1000; x++) { ultimoValor = resultado; resultado += x; System.out.printf("%d = %d + %d\n", resultado, ultimoValor, x); } // for

B

Obrigado pessoal!

R

Vixii, acho que vou ser péssima.
Tive um raciocinio quase parecido com o ultimo, mas nem lembrei da pg!
Aff Odeio matématica!
Estou perdida sem saber como pensar :S :cry:

H

A idéia de utilizar a PA é infinitamente mais eficiente do que percorrer todos os números e sair somando cada um.

E se a soma fosse ate 1.000.000? Pense nisso.
Usa a fórmula da PA que o cara colocou e seja feliz,

Abraços,

R

Fiquei perdida é PG ou PA?

H

oi rafaela,

Progressao Aritmetica = Somatório.
Progressão Geométrica = Produtório.

:wink:

A

Hum agora sim entendi valeu pessoal do GUJ

D

Eu tentei assim, e deu certo…

public class SomaUmMil {

public static void main(String[]args){

	int inicio=1;
	double fim=1000;
	double operacao = (inicio + fim) * (fim/2);
	int resultado = (int)operacao;

	System.out.println(resultado);
}

}

V

int x = 123; int y = 331; int maX = max(x, y); int miN = min(x, y); int ans = (((maX * (maX + 1))) - ((miN * (miN - 1)))) / 2;

Qualquer range que a diferenca >= 0 em O(1).

S

Por que o resultado deu 500500 ???
Não era pra imprimir a soma??? Tipo 1+1=2 2+3… Algo assim?
Alguém pode me explicar??? Sou leigona em entender problemas assim…? :frowning:

Estou estudando pela apostila do Caelum e tentando fazer os exercícios, quero muito ser programadora Java.
Mas tenho dificuldades em entender enunciado.
E por favor tenha paciência comigo rsrs
Obrigada.

Abraços!

V

Depende. Se você quer imprimir o resultado da soma, ou o cálculo também.
Isso vai depender de como o enunciado está escrito.

Se for imprimir o cálculo, terá que usar o for. Se não for, pode usar a soma dos termos da PA, que é bem mais eficiente.

G

[b][color=green]Bom dia pessoal.

Putz, tentei os códigos por aqui e no meu pc tb aparece 500500.
tentei usar o laço for : for (int x = 1; x <=1000; x++) e tb nao rolou, será q é problema do meu NotePad++ ou algum vacilo no código?
Estou com a apostila da Caelum e estudando sozinho, algum help?
Vlw[/color][/b]

A

rafaelaalves:
Vixii, acho que vou ser péssima.
Tive um raciocinio quase parecido com o ultimo, mas nem lembrei da pg!
Aff Odeio matématica!
Estou perdida sem saber como pensar :S :cry:

Nao se preocupe, se vc não é tão boa em matematica, visto q, o importante é conhecer um pouco de tudo, lógica matemática q o caso, mas tb, logica computacional e logica de negocio… Programação muito pelo ao contrário não é só matemática como muitos “iniciantes” pensam.

A

Guts00:
[b][color=green]Bom dia pessoal.

Putz, tentei os códigos por aqui e no meu pc tb aparece 500500.
tentei usar o laço for : for (int x = 1; x <=1000; x++) e tb nao rolou, será q é problema do meu NotePad++ ou algum vacilo no código?
Estou com a apostila da Caelum e estudando sozinho, algum help?
Vlw[/color][/b]

Por favor, poste seu código inteiro… O processo não está acontecendo apenas nesta linha de código.

G

O código esta igual de um colega aqui do tópico

public class Exercicio22 {

public static void main (String [] args) {

                   int min = 1;
		int max =1000;
		int soma = (min+max) * ((max-min+1) /2);
		System.out.println(soma);
	}

}
esse código apenas aparece 500500

estou usando esse código

public class Exercicio22 {

public static void main (String [] args) {
		
		
		int resultado = 0;
		int ultimoValor;
		for (int x = 0; x <= 1000; x++) {
			ultimoValor = resultado;
			resultado += x;
			System.out.printf("%d = %d + %d\n", resultado, ultimoValor, x);
		}
       }

}

e aparece assim

246753 = 247456 + 703
247456 = 248160 + 704
e por aí em diante, mas nao começa do 0

Esse esta rolando certo até as contas, porem esta tudo embolado

S
Guts00:
O código esta igual de um colega aqui do tópico

[code]
public class Exercicio22 {

public static void main (String [] args) {

int min = 1;
int max =1000;
int soma = (min+max) * ((max-min+1) /2);
System.out.println(soma);
}
}
/code]
esse código apenas aparece 500500

A soma de 1 até N é igual a N(N+1)/2 ( com N > 1)

A soma de 1 a 100 é 100*101/2 = 5050.
A soma de 1 a 1000 é 1000*1001/2 = 500500

Se aparece 500500 está certo, porque vc está somando até mil

G
sergiotaborda:
Guts00:
O código esta igual de um colega aqui do tópico

[code]
public class Exercicio22 {

public static void main (String [] args) {

int min = 1;
int max =1000;
int soma = (min+max) * ((max-min+1) /2);
System.out.println(soma);
}
}
/code]
esse código apenas aparece 500500

A soma de 1 até N é igual a N(N+1)/2 ( com N > 1)

A soma de 1 a 100 é 100*101/2 = 5050.
A soma de 1 a 1000 é 1000*1001/2 = 500500

Se aparece 500500 está certo, porque vc está somando até mil

Sérgio, é que eu não entendi bem o enunciado do exercicio da apostila, que diz: Imprima a soma de 1 até 1000

Usando a PA, é possível linha após linha imprimir a soma e o resultado?
tipo
1+1 = 2
1+2 = 3
1+3 = 4
...

Eu tentei por aqui e nao consegui, em vista que sou bem iniciante, p mim é algo um pouco complicado.
Obrigado

S
Guts00:
sergiotaborda:
Guts00:
O código esta igual de um colega aqui do tópico

[code]
public class Exercicio22 {

public static void main (String [] args) {

int min = 1;
int max =1000;
int soma = (min+max) * ((max-min+1) /2);
System.out.println(soma);
}
}
/code]
esse código apenas aparece 500500

A soma de 1 até N é igual a N(N+1)/2 ( com N > 1)

A soma de 1 a 100 é 100*101/2 = 5050.
A soma de 1 a 1000 é 1000*1001/2 = 500500

Se aparece 500500 está certo, porque vc está somando até mil

Sérgio, é que eu não entendi bem o enunciado do exercicio da apostila, que diz: Imprima a soma de 1 até 1000

Usando a PA, é possível linha após linha imprimir a soma e o resultado?
tipo
1+1 = 2
1+2 = 3
1+3 = 4
...

Eu tentei por aqui e nao consegui, em vista que sou bem iniciante, p mim é algo um pouco complicado.
Obrigado

O enunciado "Imprima a soma de 1 até 1000" significa "imprima o resultado de somar todos os números entre 1 e mil".
"soma" é o nome do resultado de uma operação de adição

Pense "Imprima o quociente de 40 e 50" , vc pensaria em imprimir todos os passos da conta de dividir ? Não , né. O enunciado só lhe pede o resultado de uma conta de dividir de 40 por 50.

Se fosse necessários mostrar os passos, isso estaria escrito explicitamente , por exemplo, "Imprima todos os passos do calculo da soma de 1 a mil"

O truque é que para saber a soma não é preciso fazer um laço. Por isso, pedir que se imprima os passos, seria ridiculo. O cara simplesmente faz um conta e pronto. Tal como se fosse uma divisão ou um produto.
Claro que o programador junior vai usar um laço e 99% das respostas serão um laço. Mas sempre tem alguém que prestou atenção nas aulas de matemática e vai lembrar de usar uma formula. O que é muito bom, porque laços devem ser evitados tanto quanto possivel.

Então, sem medo, não viagemos nos enunciados que não é preciso. Se o cara que escreveu aquele enunciado espera o passo a passo, então ele não sabe se expressar em português escrito. Problema dele. Não seu.

E

Esse é o famoso problema que Gauss resolveu quando era criança e estudava naquelas salas onde um só professor tomava conta de um monte de crianças de séries misturadas.

Para que eles não ficassem enchendo o saco, pediu-lhes para somarem os números de 1 até 100. Isso iria ocupá-los por um bom tempo.

Só que o Gauss percebeu que 1 + 100 = 2 + 99 = 3 + 98 = … = 50 + 51, que é igual a 101, e viu que há 50 dessas somas, Portanto, o valor certo é 50 x 101 = 5050.

http://galileu.globo.com/edic/112/eureca.htm

O enunciado do problema é de 1 até 1000, mas o princípio é exatamente o mesmo.

G

[color=green]Vlw pessoal, pela ajuda, é que as vezes queremos resolver as coisas, pensando que o problema é algo mirabolante, mas é algo muito simples.
Obrigado. Pelo menos agora tenho uma bagagem maior p resolver essas coisas e nao sabia q sempre devemos evitar os laços.
[/color]

H
int soma = 0;

for(int cont = 1; cont < 1001; cont ++){

soma += cont;

}

JOptionPane.showMessageDialog(null, "Soma = " + soma);
J

Prezados, aprendi com meu orientador (Thiago Segato) a não entregar a resposta de bandeja, mas tenho visto que tão complicando mais ainda o problema… o problema é simples e tinha resolvido com o código abaixo:

[class SomaumAteMil {

public static void main (String args[]) {

int a = 0;

int b = 1;

for (a=1; a<=1000; a+=b) {

System.out.println("A soma imprime o seguinte: "+a);

}

}

}]

A questão toda é que o prompt do DOS  exibia do 703 pra frente devido a uma limitação do total de linhas do cmd.exe. este código foi analisado por dois analistas e ambos concordam que, dentro do que a questão 2 do Cap 3 da apostila Caelum solicita, atende perfeitamente. Espero ter ajudado. <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/s.pnglight_smile.png?v=9" title=":slight_smile:" class="emoji" alt=":slight_smile:"> [color=darkred] [/color]
I

jhonnys oliveira:
Prezados, aprendi com meu orientador (Thiago Segato) a não entregar a resposta de bandeja, mas tenho visto que tão complicando mais ainda o problema… o problema é simples e tinha resolvido com o código abaixo:

[class SomaumAteMil {

public static void main (String args[]) {

int a = 0;

int b = 1;

for (a=1; a<=1000; a+=b) {

System.out.println("A soma imprime o seguinte: "+a);

}

}

}]

A questão toda é que o prompt do DOS  exibia do 703 pra frente devido a uma limitação do total de linhas do cmd.exe. este código foi analisado por dois analistas e ambos concordam que, dentro do que a questão 2 do Cap 3 da apostila Caelum solicita, atende perfeitamente. Espero ter ajudado. <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/s.pnglight_smile.png?v=9" title=":slight_smile:" class="emoji" alt=":slight_smile:"> [color=darkred] [/color]</blockquote>

Para vizualizar mais linhas é só clicar, com o botão direito, no icone do canto superior esquerdo da janela e selecionar proriedades. Em proriedades, selecione a aba layout. Em layout, do lado direito, vai aparecer a caixa tamanho do buffer de tela. Para este exercico, basta alterar a caixa altura. 1002 deve ser suficiente.
Espero ter ajudado.
VLW!

J

Verifiquei esta propriedade da janela DOS após meu post. Valeu pelo comentário add :thumbup:

T

Não tinha visto como funcionava o +=
Então fiz um teste da seguinte forma:

for (int i = 0, x = i; i <= 1000; i++) {

System.out.println(x += i);

}

Deu um resultado como eu queria.

Criado 25 de agosto de 2009
Ultima resposta 11 de mar. de 2014
Respostas 32
Participantes 19