Ir ao conteúdo
  • Cadastre-se

Numeros primos em um intervalo C


Posts recomendados

Olá pessoal, estou com uma dúvida de como printar os números primos em um intervalo de 1 à 50, o código que tenho é o seguinte:

#include <stdio.h>
int main ()
{
		int cont1, cont2, div=0;
for(cont2=1; cont2<=50; cont2++){
for(cont1=1; cont1<=50; cont1++)
if (cont2%cont1==0){
div++;}
if(div<=2){
printf ("%i é primo\n",cont2);}
else{
printf ("%i não é primo\n",cont2);}
}
}

Minha dificuldade está no resto da divisão inteira, realmente não sei o que tenho de usar depois do operador "%" na linha 7

Link para o comentário
Compartilhar em outros sites

Boa noite, então esse simbolo % é usado para obter o resto de uma divisão, sendo que há dois casos:

 

a % b == r // aqui compara o resultado com r

ou

r = a % b  // aqui recebe o resto da divisão

 

a = dividendo

b = divisor

r = resto

 

No seu exemplo, não há nenhum erro, pois o primeiro FOR é usado para obter os dividendos, e o segundo FOR é usado para obter o divisor, sendo que cada dividendo é usado com todos 50 divisores. Só aconselho a usar da seguinte forma:

 

#include <stdio.h>

int main ()
{
  int cont1, cont2, div=0;
  
  for(cont2=1; cont2<=50; cont2++, div = 0){
    
    for(cont1=1; cont1<=50; cont1++){
      if (cont2%cont1==0){
	div++;
      }
    }
    
    //Só é primo se existir 2 ou mais divisores
    if(div==2)
      printf ("%i é primo\n",cont2);
    else
      printf ("%i não é primo\n",cont2);
  }
  
}

Sempre zere o div, pois é usado mais de um dividendo.

Lembrando que div precisa ser exatamente 2, ou 4.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...