Fundamentos:Solucións:Primos con Lista Enlazada
Saltar á navegación
Saltar á procura
Escribir un programa que permita as seguintes operacións:
- Averiguar si un número e Primo
- Descompoñer un número en Factores Primos
- Listado de Primos
- Gardar Lista de Primos
- Cargar Lista de Primos
- Sair
- Primeira opción debe solicitarlle ó usuario un número e informar si é primo ou non. Para facer eso, se manterá unha lista enlazada cos números primos que se vaian calculando, de xeito que cada vez sexa máis rápido o cálculo.
- A Segunda opción debe solicitarlle ó usuario un número e descompoñelo en factores primos. Para facelo se manterá unha lista enlazada cos números primos que se vaian calculando.
- A Terceira opción informará o usuario do número de primos que existen na lista, do maior e do menor, e permitirá o usuario listar os primos comprendidos nun rango determiñado entre os números almacenados.
O saír do programa se salvará a lista enlazada nun ficheiro "primos.dat", que se cargará o iniciar o programa de novo.
Pseudocódigo
Implementación en C
/* Primos con lista enlazada
*/
#include <stdio.h>
#include <stdlib.h>
#include "libprimo.h"
void espera(void);
void verPrimo(void);
void descomponNumero(void);
void listaPrimos(void);
void espera(void)
{
printf("\n\n\n Para continuar pulsa ENTER...");
scanf("%*c");
}
void verPrimo(void)
{
int num;
system("clear");
printf("Numero?");
scanf("%d%*c",&num);
printf("O número %d ",num);
if (ePrimo(num)) printf("E primo.\n");
else printf("NON e primo.\n");
espera();
}
void descomponNumero(void)
{
int num;
int fac=0;
system("clear");
printf("Numero?");
scanf("%d%*c",&num);
printf("Factores de %d = ",num);
while(num!=1)
{
fac=minFactor(num);
printf("%d*",fac);
num=num/fac;
}
printf("1");
espera();
}
void main(void)
{
int op;
do {
system("clear");
printf("¿Que queres facer?\n\n");
printf("1.- Averiguar si un número é primo.\n");
printf("2.- Descompoñer un número en factores primos.\n");
printf("3.- Lista de números primos.\n");
printf("4.- Garda a Lista de números primos.\n");
printf("5.- Carga a Lista de números primos.\n");
printf("6.- Saír.\n");
scanf("%d%*c",&op);
switch(op)
{
case 1: verPrimo();
break;
case 2: descomponNumero();
break;
case 3: listaPrimos();
espera();
break;
case 4: gardaPrimos();
break;
case 5: cargaPrimos();
break;
}
} while (op!=6);
eliminaPrimos();
}