Ir para conteúdo

POWERED BY:

Arquivado

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

Gustavo Rodrigues Torre

Primo de Crivo

Recommended Posts

Bom dia

 

Preciso fazer um programa que gere a sequência de numeros primos usando o algoritmo de Crivo

Eu fiz o seguinte programa abaixo

A minha dúvida e a seguinte como eu posso fazer para que o programa mostre os primos digitados sem ter um limite estabelecido no começo do programa

 

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

#define NMAX 100000//tamanho limite para as contas
main ()
{
int k,i,j,a=1;
int primos[NMAX];
float raiz;

while(a!=0) { //Comando para entrer com novos valores
system("cls"); //Comando para limpar a tela

printf("Digite a quantidade de numeros a verificar de 1 ate 100000: \n");
scanf("%d",&k);

raiz = sqrt(k);

	 for(i=2; i<=k; i++){
	 primos[i]=i;
	 }

		 for(i=2; i<=raiz; i++){
			  if(primos[i]==i){
				   for (j=i+i; j<=k; j+=i)
				   primos[j]=0;
				   }
				   }

		  for(i=2; i<=k; i++){
			  if(primos[i]!=0)
			  printf("%d ",primos[i]);
}
printf("\nDeseja entrar com outro valor? (1 - sim 0 - nao)\n");
scanf("%d",&a);
printf("\n");
}
printf("\n");
system("pause");
return 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo nesta linha aqui

 

#define NMAX 100000//tamanho limite para as contas
main ()
{
int k,i,j,a=1;
int primos[NMAX];

Eu defini um valor fixo para o programa no caso 100000

 

Mais eu gostaria que o usuário entrasse com um valor maior do que este.

 

Qual seria o procedimento?

 

oO num entendi?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tipo assim:

//#define NMAX 100000//tamanho limite para as contas
int main ()
{
int k,i,j,a=1;
int iNMAX;
scanf("%d", &iNMAX);
int primos[iNMAX];

isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem eu fiz como você havia dito

Mais deu erro no programa ele compila e tals mas, na hora de executar ele dá erro

 

{
int k,i,j,a=1;
int iNMAX;
scanf("%d", &iNMAX);
int primos[iNMAX];float raiz;

while(a!=0) { //Comando para entrer com novos valores
system("cls"); //Comando para limpar a tela

printf("Digite a quantidade de numeros a verificar de 1 ate 100000: \n");
scanf("%d",&k);

raiz = sqrt(k);

	 for(i=2; i<=k; i++){
	 primos[i]=i;
	 }

		 for(i=2; i<=raiz; i++){
			  if(primos[i]==i){
				   for (j=i+i; j<=k; j+=i)
				   primos[j]=0;
				   }
				   }

		  for(i=2; i<=k; i++){
			  if(primos[i]!=0)
			  printf("%d ",primos[i]);
}
printf("\nDeseja entrar com outro valor? (1 - sim 0 - nao)\n");
scanf("%d",&a);
printf("\n");
}
printf("\n");
system("pause");
return 0;

}

tipo assim:

//#define NMAX 100000//tamanho limite para as contas
int main ()
{
int k,i,j,a=1;
int iNMAX;
scanf("%d", &iNMAX);
int primos[iNMAX];

isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

nossa aki num deu erro naum..

tente usar outro compilador pra ver@

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algoritmo murcho esse seu viu gustavo eauheaiueahuiae ate amanha mlk

 

pega esse aqui ta muito mais joia

 

#include <stdlib.h>
#include <stdio.h> 
#include <dos.h> 
#include <conio.h> 
int main() 
{int num=0, totP=0, totD=0,você,i; 
while(a==1)
{system("cls");
system("color 3f");		 
	printf ("				   Leonardo Pereira de Araujo"); 
	printf("\n\n\n");
	printf ("				   Crivo de Eratotenes"); 
	printf ("\n\n\n");
	printf ("Digite um numero: "); 
	scanf ("%d",&num); 
	printf("\n\n\n");
	printf ("Os numeros abaixo sao primos de %d ate 2",num); 
	printf("\n\n");
	for (você=num;você>=1;você--){totD=0; 
	for (i=1;i<=você;i++){ 
		if (você%i==0) {totD++;} 
		} 
		if (totD==2){printf ("%d | ",você); totP++;}} 
printf("\n\n");
printf ("\nTotal de numeros primos : %d",totP); 
printf("\n\n\n");
printf("\n\nDeseja fazer outra consulta? (1 = sim e 0 = nao) ");
scanf("%d",&a);
}
system("pause");
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que é esse algoritmo de Crivo? Use alocação dinâminca pra resolver o problema do limite, ai o usuário pode definir.

 

Usa qual compilador quit?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, o debugger do DevC++ é ruin mesmo ou eu não to sabendo usar? Tava usando o Visual Studio 6.0, ele mostrava tudo detalhado quando ia debuga, bem diferente do Dev

Compartilhar este post


Link para o post
Compartilhar em outros sites

hasuieshsueashe, NINJA! Vou baixar o Visual C++ 2008 pra ver como é, o DevC++ é bom, só não curti o debugger. Na verdade to tentando mexer no Ubuntu e usar o gcc, mas tá osso "/

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.