Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

raf89

Como exibir os 100 primeiros primos

Recommended Posts

Oi. Sou novo no forum. Espero que ele me ajude a tirar minhas duvidas de C e que eu possa tirar as duvidas de outras pessoas. Bom, queria saber como eu faço um programa que mostre na tela os 100 primeiros numeros primos. Na logica eu sei mais ou menos, mas na hora de passar pra linguagem complica. Valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O i eh o contador, o z so pode chegar ate 2 pois como eh um numero primo ele so dividiria por 1 e por ele mesmo. Nao entendo o que ta errado. Eh como somar 1 + 1 e dar 5.#include <stdio.h>#include <stdlib.h>int main(){ int i = 0; int x; int z = 0; int num = 1; while( i < 100){ x = 1; while( x <= num){ x++; if( num % x == 0) ++z; } if (z == 2){ printf("%d eh primo\n", num); ++i; } } ++num;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

é bom identar o código pra ficar mais fácil de se entender.

 

#include <stdio.h>#include <stdlib.h>int main(){   int i = 0;   int x;   int z = 0;   int num = 1;   while( i < 100){	  x = 1;	  while( x <= num){		 x++;		 if( num % x == 0)			++z;	  }	  if (z == 2){		 printf("%d eh primo\n", num);		 ++i;	  }   }   ++num;}
repare que a variável num só será incrementada se i < 100.

a lógica não está correta.

 

além disso, voce precisa zerar a variável z a cada volta do laco principal.

outra dica é:

aqui

while( x <= num)

voce pode agilizar a saida do laco assim:

while( x <= (num/2))

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom... pensei um pouco diferente.

 

#include <iostream>#include <stdio.h>#include <stdlib.h>int main(){	int iQtdPrimos = 0;	int num = 1;		while( iQtdPrimos < 100)	{		bool bPrimo = true;		int x = num/2;		while(x > 1)		{			if( num % x == 0)			{				bPrimo = false;				break;			}			x--;		}		if (bPrimo)		{			printf("%d eh primo\n", num);			iQtdPrimos++;		}		num++;	}	system("pause");}

Esta aí o código... Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz assim, mas so funciona uma vez:

 

#include <stdio.h>

#include <stdlib.h>

 

int main(){

 

int i = 0;

int x;

int z = 0;

int num = 1;

while( i < 100){

num++;

x = 1;

while( x <= num/2){

z = 0;

x++;

if( num % x == 0){

++z;

}}

if (z == 1){

printf("%d eh primo\n", num);

++i;

}

}

system("pause");

}

 

Realmente tinha que zerar o z. Valeu. O num nao tava dentro do while. Ele tava depois de fechar o while. O outro programa funcionou obrigado, mas nao entendo o que faz a biblioteca <iostream> , o comando bool, bprimo = true, bprimo = false, e porque o if(bprimo) ta se condiçao.Outra coisa. Estou usando copiar e colar o codigo para passar, como passo ele do jeito que ele é para ficar já identado? Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola amigo.

 

Vamos por parte:

 

Você está certo, não precisaria do Include do IOStream.

 

bool bPrimo = true; é a declaração de uma variavel booleana. (verdadeiro ou falso).

 

O if funciona como :

 

if(CONDICAO) certo... essa condição retorna sempre um booleano, true ou false.

Como temos uma váriavel booleana, não precisamos testar.

 

Mas para ficar mais claro. Poderiamos fazer o seguinte:

 

if(bPrimo == true){	 printf("%d eh primo\n", num);	 iQtdPrimos++;}

 

Para colar o código identado, utilize o [ code] código [ /code] .

 

Valeu...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa. Acho que voces ja devem tar me achando um chato. O problema é que estou aprendendo C e esses comandos sao de C++. Nao tem um jeito de fazer esse programa com comandos comuns( apenas while, if, else, etc)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que eu tava querendo dizer eh que comandos como: bool e <iostream> eu nao conheço. Me disseram que eles sao comandos de C++. Mas a questao nao eh essa. Eh que eu quero fazer o programa com comandos simples, como os que eu falei. Valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo...

 

bool é usado para declaração de uma variável booleana. Recebe TRUE, para verdadeiro, e FALSE para falso. Não é uma função!

 

Se quiser. Podes tirar o <iostream>

 

Não sei o que está querendo dizer. Mas... este programa está super simples.

 

Se eu fosse você, antes de começar a programar em C, leria algum livro de lógica de programação, e ou, algoritmos.

 

Abraço. Qualquer dúvida estamos ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

CONSEGUI!!! Eh assim que eu queria. 1 nao eh primo.

#include <stdio.h>#include <stdlib.h>int main(void){		int quant = 0, num = 2;	int x, z;	while (quant != 100){		  z = 0;		  for(x = num; x > 0; x--){				if ( num % x == 0)				   ++z;		  }		  if ( z == 2){				   printf("%d(%d)\n", num, quant + 1);				   ++quant;		  }		  ++num;		  }	system("pause");}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.