PRIMOS_1.c



// GRAFICA DE NUMEROS PRIMOS CONTENIDOS EN UN RANGO

#include <stdio.h>

// BLOQUE DE CONSTANTES
//______________________________
#define BASE 28

// BLOQUE DE PROTOTIPOS
//______________________________
void Inicio();
int PideDato();
void Revisa(int);
int EresPrimo(int);
void Grafica();


// BLOQUE DE VARIABLES GLOBALES
//_______________________________
int   Primos = 0;
int NoPrimos = 0;

// INICIO DEL CODIGO
//______________________________

void Grafica()
{
	int N = 0;
	int R = 0;			// RESTO * *
	char ESP_AST[7] = "\t \t\t\t*\0";
	char AST_ESP[7] = "\t*\t\t\t \0";
	char AST_AST[7] = "\t*\t\t\t*\0";

	N = Primos;	// SON IGUALES EN CANTIDAD
	N = (Primos > NoPrimos) ? BASE - Primos : BASE - NoPrimos;

	while(N)		// IMPRIME SALTOS DE LINEA
	{
		printf("\n");
		N--;
	}
	if (Primos > NoPrimos)
	{
		N = Primos-NoPrimos;
		R = Primos-N;
		while(N)                // IMPRIME ASTERISCO ESPACIO
	        {
        	        printf("%s\n", AST_ESP);
                	N--;
	        }
	}
	else{				// IMPRIME ESPACIO ASTERISCO

		N = NoPrimos-Primos;
		R = NoPrimos-N;
		while(N)
		{
			printf("%s\n", ESP_AST);
			N--;
		}
	}
	while(R)
	{
		printf("%s\n", AST_AST);
		R--;
	}

	printf("___________________________________________________\n");
	printf("\tSI PRIMOS\t\tNO PRIMOS");
	scanf("%d", &N);	// ESPERAR UN POCO
}

int EresPrimo(int Numero)
{
	int x, Contador = 0;

	for(x=2; x <= Numero/2; x++)
	{
		if(Numero%x == 0) Contador++;
	}
	if (Contador) return 0;
	return 1;
}

void Revisa(int X)
{
	int Numero = 0;

	for(Numero = 1; Numero <= X; Numero++)
	{
		(EresPrimo(Numero)) ? Primos++ : NoPrimos++;
	}
}

int PideDato()
{
	int Limite = 0;

	printf("Introduce el lImite: ");
	scanf("%d", &Limite);
	return Limite;
}

void Inicio()
{
	int Limite = 0;

	Limite = PideDato();
	Revisa(Limite);
	Grafica();
}

main() { Inicio(); }