Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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:
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