Como faço para imprimir a soma de 1 até 1000:
1+2+3+4+5…+99+100…
Como faço para imprimir a soma de 1 até 1000:
1+2+3+4+5…+99+100…
Em Ruby
1000.times {|v| puts v}
Em Java: use o laço FOR
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)
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.
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);
}
}
E por que não é exatamente isso aí?
int resultado = 0;
for (int x = 1; x <= 1000; x++)
resultado += x;
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.
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
Obrigado pessoal!
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 
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,
Fiquei perdida é PG ou PA?
oi rafaela,
Progressao Aritmetica = Somatório.
Progressão Geométrica = Produtório.

Hum agora sim entendi valeu pessoal do GUJ
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);
}
}
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).
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…? 
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!
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.
[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 ( e tb nao rolou, será q é problema do meu NotePad++ ou algum vacilo no código?int x = 1; x <=1000; x++)
Estou com a apostila da Caelum e estudando sozinho, algum help?
Vlw[/color][/b]
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
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.
[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 (e tb nao rolou, será q é problema do meu NotePad++ ou algum vacilo no código?int x = 1; x <=1000; x++)
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.
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
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
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 = 500500Se 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 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 = 500500Se 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.
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.
[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]
int soma = 0;
for(int cont = 1; cont < 1001; cont ++){
soma += cont;
}
JOptionPane.showMessageDialog(null, "Soma = " + soma);
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 só 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]
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 só 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!
Verifiquei esta propriedade da janela DOS após meu post. Valeu pelo comentário add :thumbup:
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.