// 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(); }