Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

felipecesar

Números inteiros

Recommended Posts

Fazer um programa em C para calcular a soma dos N primeiros múltiplos de um inteiro K, onde N e K são lidos e são números inteiros e positivos.

 

eu fiz:

 

#include <stdio.h>

 

main() {
  int num, soma=0, i=0, j, l, numeros;
  printf("Informe um numero: ");
  scanf("%d", &num);
  printf("Informe quantos numeros: ");
  scanf("%d", &numeros);
     for(j=1;j<=num;j++) {
        for(l=1;l<=num;l++) {
           if((j*l==num) && (i<numeros)) {
              i++;
              soma+=j;
           }
        }
     }
  printf("O resultado e - %d", soma);
  getch();
}

 

Está Certo? Essa é a melhor maneira de se fazer esse programa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem um jeito melhor,sim.

 

você quer calcular a soma dos N primeiros múltiplos de K. Tem gente que desconsideraria o próprio inteiro K, por isso eu vou deixar aqui a definição de múltiplo.

 

Qualquer quantidade y é múltiplo de um inteiro x se existir um inteiro m tal que y = m * x.

 

(http://mathworld.wolfram.com/Multiple.html)

 

Repare que não é informada nenhuma restrição sobre o inteiro n. Assim, a = b * m no seu caso, seria a = K * m para qualquer m inteiro, inclusive zero. Mas não estou considerando o zero como um múltiplo porque ele é o elemento neutro da adição (é fácil alterar depois se precisar). Então, sendo N a quantidade de múltiplos especificada pelo usuário:

 

N=1 => Soma = K

N=2 => Soma = K + 2*K

N=3 => Soma = K + 2*K + 3*K

......

N=M => Soma = K + 2*K + 3*K + 4*K + ... + (M-1) *K + M*K

 

Isolando o fator comum, temos que a soma é igual a K * [ 1 + 2 + 3 + 4 + .... + (M-1) + M ], ou seja, K * [ Soma_PA_razao_1 ].

Isso nos dá a fórmula K * [ M * (1 + M) ] / 2;

 

Ex: K=27 , N = 50 (múltiplos)

Soma = 27 * [ 50 * (1 + 50) ] / 2 = 27 * 25 * 51 = 34425

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.