Tenhi duvida nessa questao:
calcule a soma de todos os numeros primos existentes entre 1 e um numero informado pelo usuario.
Olá,
Seguinte não sou expecialista em C mas sei um pouco de C++, além de trazer meu programa vou ditar minha lógica, blz? vamo lá...
Eu começei declarando as variáveis necessarias, n(numero que o cara determinou), s=0 pra ser a soma e d=0 pra ser o numero de divisores do numero.
depois eu fiz um for pra ler todos os valores de i=2 (pois o 1 não é primo) até i=n e dentro do loop você vai fazer um for pra descobrir se esse numero é primo (dois divisores ou seja d=2) e se ele for primo a variavel s recebe s+i e lembre-se de zerar o "d" para quando passar para um outro
a ideia é essa basicamente, o código em c++:
#include <iostream>
using namespace std;
int main(){
int n,s=0,d=0;
cin>>n;
for(int i=2;i<=n;i++){
for(int p=1;p<=i;p++){
if(i%p==0){
d++;
}
}
if(d==2){
s=s+i;
d=0;
}
else{
d=0;
}
}
cout<<s;
}
Obs.: cin -> leia, cout-> escreva, % -> resto na divisão por, = -> recebe, ==-> igual. não sei se tem todos esses no C
ah e eu não consegui entender muito bem se ele inclui o "n" na soma (no caso dele ser primo) nessa solução eu considerei assim no meu primeiro for quando coloquei i<=n mas caso não inclua o n substitua i<=n por i<n :)
Boa noite e bons estudos, espero ter ajudado!
//calcule a soma de todos os numeros primos existentes entre 1 e um numero informado pelo usuario.
#include <stdio.h>
#include <stdlib.h>
int main(){
int numero, i, soma = 0;
int resto = numero;
printf("\ndigite o numero maximo para listar a soma dos número primos:");
scanf("%d", &numero);
for(i=0; i<=numero; i++){
if(i==2){
soma = soma + i;
printf("\n(%d)a soma do numero primo %d dentro do if 1 e: %d", i, i, soma);
} else if(i>2 && i%2!=0){
soma = soma + i;
printf("\n(%d)a soma do numero primo %d dentro do if 2 e: %d",i, i, soma);
} else {
printf("\n(%d) %d nao e primo entao soma se mantem: %d",i, i, soma);
}
}
printf("\n\n-----------Resultado Final -----------");
printf("\na soma dos numeros primos de 0 ate %d e: %d", numero , soma);
return 0;
}
Expliquei o funcionamento do código dentro do próprio código, o que fica mais fácil de entender e testar o que ocorre dentro do loop for.
Basta fazer a iteração dentro do for e verificar se o numero é primo ou não.
Precisa de um loop do tipo for porque você sabe a quantidade de loops que será informado pelo usuário.
Você precisa de dois IFs para veficiar os numeros primos:
O primeiro IF para verificar se o numero é 2 porque o mesmo é o único par dentro dos némeros primos.
O segundo IF para verificar se o número é maior que dois e não é divisivel por 2 ou seja o mesmo só é divisível por ele mesmo ou por 1.
O else será apenas para apresentar que o valor da variável soma não foi alterado.
Sendo primo deve ser salvo dentro de uma variável acumuladora de valores, chamada soma. Você também pode somar da forma abreviada de receber o valor somando: soma += i;
Espero que te ajude.
Caso tenha mais alguma dúvida estou a disposição. Entre em contato comigo no PROFES e agende uma aula experimental. https://profes.com.br/walisson.ti