CapivaraDeTroia Postado Setembro 20, 2019 Denunciar Share Postado Setembro 20, 2019 (editado) Olá a todos, sou iniciante em programação e estou com dificuldade no seguinte exercicio de linguagem em c Dados n números inteiros positivos, calcular a soma dos que são primos. Quando somo os números 3 e 5 por exemplo, só aparece como resultado o número 3, ou vice versa. Minha programação até agora: #include <stdio.h> int main () { int n,soma,i,div; n = 1; div = 0; soma = 0; while (n != 0) { printf("Digite valor maior que 0 (Digite 0 para para finalizar "); scanf("%d", &n); for (i = 1; i <= n; i++) { if (n%i == 0) { div = div + 1; } if (div == 2) { soma = soma + n; } } } printf("Soma: %d",soma); return 0; } Editado Setembro 20, 2019 por CapivaraDeTroia Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Hazzu Postado Setembro 25, 2019 Denunciar Share Postado Setembro 25, 2019 (editado) 1) Ao enviar um código em uma postagem utilize a ferramenta para inserir código no texto (4° ferramenta do cabeçalho). 2) A sua variável div deve ser zerada a cada novo número testado. Da forma que está ai, se a pessoa digita inicialmente 4, após o for, div ficará com valor 3 e quando a pessoa digitar o segundo número, div continuará a partir de 3. 3) O teste de primo a partir da quantidade de divisores (div == 2) deve ser efetuada fora do for, visto que para números compostos div também vai assumir valor 2 em algum momento, porém finalizará maior. 4) Utilize algumas quebras de linhas para melhorar a interface do seu código. Código corrigido: #include <stdio.h> int main () { int n,soma,i,div; n = 1; soma = 0; while (n != 0) { div = 0; //zerando variável div a cada novo teste printf("Digite valor maior que 0 (Digite 0 para finalizar):\n"); scanf("%d", &n); for (i = 1; i <= n; i++) { if (n%i == 0) { div = div + 1; } } if (div == 2) { soma = soma + n; } } printf("Soma dos primos: %d\n", soma); return 0; } 5) Extra. A estrutura de repetição do se encaixa melhor nesse laço, visto que de qualquer forma ele será executado ao menos uma vez. Você também pode colocar as instruções fora do laço para deixar a tela do programa mais limpa. #include <stdio.h> int main () { int i, n, soma=0, div; printf("Ola, esse programa calcula a soma de numeros primos digitados.\n"); printf("Digite um numero natural (0 para finalizar):\n"); do { div = 0; //zerando variável div a cada novo teste scanf("%d", &n); for (i = 1; i <= n; i++) { if (n%i == 0) { div += 1; //O operador += resume div = div +1 } } if (div == 2) { soma += n; } } while(n != 0); printf("Soma dos primos: %d\n", soma); return 0; } Editado Setembro 25, 2019 por Hazzu Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
CapivaraDeTroia
Olá a todos, sou iniciante em programação e estou com dificuldade no seguinte exercicio de linguagem em c
Dados n números inteiros positivos, calcular a soma dos que são primos.
Quando somo os números 3 e 5 por exemplo, só aparece como resultado o número 3, ou vice versa.
Minha programação até agora:
#include <stdio.h>
int main () {
int n,soma,i,div;
n = 1;
div = 0;
soma = 0;
while (n != 0) {
printf("Digite valor maior que 0 (Digite 0 para para finalizar ");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
if (n%i == 0) {
div = div + 1;
}
if (div == 2) {
soma = soma + n;
}
}
}
printf("Soma: %d",soma);
return 0;
}
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.