Ir ao conteúdo
  • Cadastre-se
jessicaburiche

Números primos - iniciante

Recommended Posts

Boa tarde.

Estou iniciando em C e estou com um problema que, acredito eu, a solução deve ser bem ******, mas não consigo de maneira alguma resolver.

Tenho que fazer um programa que imprima os 10 primeiros números primos. Achei que estava tudo certo, porém ele imprime os números consecutivos, já tentei de tudo, mas não consigo. Mas acho sinceramente que deve ser bem fácil e eu não consigo enxergar, então gostaria que alguém pudesse me ajudar.

Segue abaixo:


#include <stdio.h>
#include <stdlib.h>

int main()
{
int a,b,c,d; //a= divisor
//b= número
//c= quantidade de número primos
//d= quantidade de restos "0"
system ("color f1");
system ("cls");
a=1;
b=2;
c=0;
d=0;
printf("OS 10 PRIMEIROS NUMEROS PRIMOS SAO:\n\n");
{
while (c<11)
{
while (a<<=;
{
if (b%a==0);
a=a+1;
d=d+1;
}
{
if (d==2);
printf ("%d\n\n", ;
}
b=b+1;
c=c+1;
}
system ("pause");
}}

segue o resultado:

imagem.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Jéssica,

realmente a implementação não é tão difícil, basta pensar um pouquinho mais.

Para facilitar um pouco o código crie uma função para retornar se o número é primo ou não, isso tornará o código um pouco mais 'limpo' visualmente falando. Veja o código que fiz:

#include <stdio.h>
#include <stdlib.h>

#define NUM_QUANT 10 //Constante onde definimos a quantidade de números

int isPrimo(int numero){
int i; //Variável de controle do Loop
if(numero > 1){ //Caso a var número for 0 ou 1 retornamos 0(falso)
for(i=2;i<numero;i++) //Loop de iteração
{
if(numero%i == 0) //Caso o resto da divisão de numero/i=0 o número não é primo
return 0;
}
return 1; //Caso contrário o número é primo e retornamos 1(verdadeiro)
}else
return 0;
}

int main()
{
int i = 0;
int quantPrimos = 0;
while(quantPrimos<NUM_QUANT) //Enquanto o números de primos encontrados for menor que NUM_QUANT(10)
{
i++; //Incrementa o número
if(isPrimo(i) == 1){ //Se for primo..
printf("%d\t",i); //Imprime na tela
quantPrimos++; //Incrementa quantPrimos
}
}
return 0;
}

Note que foram necessárias duas variáveis no loop, uma para incrementar o número que seria avaliado e outra para guardar a quantidade de números primos encontrados. Qualquer dúvida entre em contato.

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada guivaldevieso, realmente agora ficou mais claro.

Estou conseguindo avançar.

O único problema do seu código, é que ele não mostra todos os números na tela. Quando eu executei, ele abriu e fechou o prompt sem executar nada, aí eu coloquei um system("cls"), aparecem os números, um de cada vez, e depois fecha muito rápido. Mas mesmo assim já deu pra entender melhor. Muito obrigada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×