Ir para conteúdo

POWERED BY:

Arquivado

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

rovisilva

Números primos! C/C++

Recommended Posts

Olá pessoal, tenho duas dúvidas...

 

a primeira, que foge um pouco do que eu estou fazendo é como utilizar a função "cout", da biblioteca <iostream.h> e saber como ela é representada em um pseudocódigo, e fora isso, gostaria de resolver um problema.

 

Segue abaixo:

 

Escreva um programa que mostre todos os números primos a partir de 1 até o número n informado pelo usuário.

Exemplo: sendo informado o número 20, o programa deverá mostrar os seguintes números primos:

 

1

2

3

5

7

9

11

13

17

19

 

Eu cheguei em uma lógica para mostrar a quantidade de números primos solicitada, mas gostaria de seguir o que é pedido.

 

Olhem o programa:

 

#include <stdio.h>
#include <conio.h>

int main()
{
	int i=1;
	int b=2;
	int c=0;
	int d, e=0;
	printf("Entre o numero de numeros primos desejados: ");
	scanf("%d", &d);
	while(e<d)
	{
		while(b<i)
		{
			if(i % b == 0)
			{
				c=1;
				break;
			}
			b=b+1;
		}
		b=2;
		if(c==0)
		{
			printf("%d\n", i);
			e++;
		}
		c=0;
		i++;
	}
	getch();
}

Abraços http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja esse programinha, faz um pedaço do q você qr:

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

int main(void)
{
  int numero=1, i;
  while(numero){
  printf("Digite '0' para sair.");
  printf("Digite um numero: ");
  scanf("%d",&numero);
  for(i=2;i<=(numero>>1)+1;i++) {
	if (numero == 1 || numero == 2 || numero == 3) {
	 break;
	}
	if (!(numero%i)) {
	  printf("\n\n\t%d nao eh primo, ele eh divisivel por %d.\n",numero,i);
	  break;
	}
  }
  if ((numero%i) || (numero == 1) || (numero == 2) || (numero == 3)) {
	printf("\n\n\t%d eh primo.\n",numero);
  }
  }
  system("PAUSE");
  return 0;
}

bom em relação ao cout ele é representado pelo escreva, você pode usar ele assim:

#include <iostream>
using namespace std;
int main(){
cout << "OI" <<endl;
.
.
system("pause");
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quit,pára de fazer esses códigos frankenstein... :D zuera

 

 

#include <stdio.h>
int main(void)
{
 int numero=0;
 int divisor,i;

 INICIO:
   do {
   printf("Digite um numero (0 para sair): ");
   scanf("%d",&numero);
   } while(numero<0);

   if (numero) {
	   for(i=2;i<=numero;i++) {
		   divisor = 2;
		   while(divisor < i && !(i%divisor))
			   divisor++;

		   if (divisor == i)
				 printf("\n%d",i);
	   }
	   goto INICIO;
   }
}

 

Antes de começar com xiitismos por causa de um goto*:

 

1º) O primeiro do-while já filtra os numeros negativos .você so sai dele se digitar um numero >=0

 

2º) O if deixa passar somente numeros positivos. Se for zero,sai do programa.

 

3º) No final do if vai ter que retornar ao inicio e perguntar de novo.

 

4º) Se eu colocar um do-while externo,vou comparar duas vezes.

 

 

* aqui na universidade evangelizam sobre nao usar goto. Quero que morram todos secos.O fato de existir um jump incondicional não quer dizer que ele não preste pra algo simplesmente porque em Assembly ele gera código macarrônico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quit este aqui tb resolve o problema

 

 

Este aqui também resolve o seu problema

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

/*Mostrar todos os numeros primos*/
# include<stdio.h>
# include<stdlib.h> 

main()
{ int n,d,c,a=1;
while (a==1) 
{ 
system("cls"); //Comando para limpar a tela
system("color 2F"); //Comando para mudar a cor de fundo e da fonte
printf("\nEntre com um numero natural: ");
scanf("%d",&n);
printf("\nO numero %3d eh primo.",1); 
//Mostrar todos os primos
for (d=1;d<=n;d++) 
{ for (c=2;c<=d-1;c++) 
	 if (d%c == 0) break;
	 if (c==d) printf("\nO numero %3d eh primo.",d); 
	 }

printf("\nDeseja entrar com um novo numero? (1)Sim (0)Nao\n\n");
scanf("%d",&a);
}

system("pause");
return 0;
} //Fim do programa

 

 

Quit,pára de fazer esses códigos frankenstein... :D zuera

 

 

#include <stdio.h>
int main(void)
{
  int numero=0;
  int divisor,i;

  INICIO:
	   do {
	   printf("Digite um numero (0 para sair): ");
	   scanf("%d",&numero);
	   } while(numero<0);

	   if (numero) {
		   for(i=2;i<=numero;i++) {
			   divisor = 2;
			   while(divisor < i && !(i%divisor))
				   divisor++;

			   if (divisor == i)
					 printf("\n%d",i);
		   }
		   goto INICIO;
	   }
}

Antes de começar com xiitismos por causa de um goto*:

 

1º) O primeiro do-while já filtra os numeros negativos .você so sai dele se digitar um numero >=0

 

2º) O if deixa passar somente numeros positivos. Se for zero,sai do programa.

 

3º) No final do if vai ter que retornar ao inicio e perguntar de novo.

 

4º) Se eu colocar um do-while externo,vou comparar duas vezes.

 

 

* aqui na universidade evangelizam sobre nao usar goto. Quero que morram todos secos.O fato de existir um jump incondicional não quer dizer que ele não preste pra algo simplesmente porque em Assembly ele gera código macarrônico.

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.