Ir ao conteúdo
  • Cadastre-se
swan

RESOLVIDO Ajuda em imprimir os primos entre dois números x e y

Recommended Posts

#include <stdio.h>#include <locale.h>//números primos entre x e ymain (){	setlocale (LC_ALL, "portuguese");	int x,y,cont=0,primo,divisor;	printf ("\n\nEntre com o primeiro número: ");	scanf ("%d", &x);	printf ("Entre com o segundo número: ");	scanf ("%d", &y);	if (x>y){		for (primo=x;primo<=y;primo--){			for (divisor=1;divisor<=primo;divisor++){				if (primo%divisor==0){					cont++;				}			}		if (cont==2){			printf ("%d ,", primo);		}		}	} else {		for (primo=y;primo<=x;primo--){			for (divisor=1;divisor<=primo;divisor++){				if (primo%divisor==0){					cont++;				}			}		if (cont==2){			printf ("%d ,", primo);		}		}	}}

Código compila mas não imprime os primos. Para na leitura do segundo número.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele não está executando a estrutura de repetição. Algum problema no laço for.

Foi a primeira coisa que identifiquei no debug.


Obs: Troque o sinal <= para >=


O código ainda possui erros. Se não conseguir achar a gente ajuda aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mudei para >= e não adiantou  :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

mudei para >= e não adiantou  :(

 

Aqui funcionou.

 

for (primo = x; primo >= y; primo--){

e no

for (primo = y; primo >= x;primo--){

não é em todos. O for interno permanece <=

Isso seria evitado se você não misturasse incremento com decremento. 

 

Só que o resultado ainda sai errado.

 

Coloque um getch() no final do código antes da última chave }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alterei os sinais mas só mostrava 1 primo

Descobri o erro no código

a variável cont não tava sendo zerada pra ser incrementada em cada volta do laço for

 

refiz ele com alguma alterações

 

agora ta certinho

#include <stdio.h>#include <conio.h>//imprimir os números primos entre dois outros númerosmain(){	int num1,num2,divisor,primos,cont;	printf ("\n\nEntre com o primeiro número: ");	scanf ("%d",&num1);	printf ("Entre com o segundo número: ");	scanf ("%d",&num2);	if (num1==num2){		printf ("Números iguais!");		main();	}	if (num1>num2){		printf ("\n\n====Primos entre %d e %d====\n\n",num2,num1);		num2++;		num1--;		for (primos=num2;primos<=num1;primos++){			cont=0;			for (divisor=1;divisor<=primos;divisor++){				if (primos%divisor==0){					cont++;				}			}			if (cont==2){			printf (" - %d - ", primos);			}		}	} else {		printf ("\n\n====Primos entre %d e %d====\n\n",num1,num2);		num1++;		num2--;		for (primos=num1;primos<=num2;primos++){			cont=0;			for (divisor=1;divisor<=primos;divisor++){				if (primos%divisor==0){					cont++;				}			}			if (cont==2){			printf (" - %d - ", primos);			}		}	}getch();}
  • Curtir 1

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

×