Hola, escribí un programa que identifica si un numero es primo o no. Al compilarlo no me da ningún error, pero cuando introduzco un número que no es primo me da un resultado extraño. Además, la parte del final cuando quiero seleccionar no funciona, y no tengo idea de donde puede estar el error.
Código:
// un programa para calcular si
// un numero es primo o no
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <math.h>
#include <stdlib.h>
#define retardo 1e9
void calculo(void);
void eleccion(void);
main()
{
calculo();
return 0;
}
void calculo(void)
{
long n, m = 3, cuenta = 0;
printf("\n\n\nIntroduzca el número a comprobar.\n\n");
scanf("%d", &n);
printf("\n\nMuy bien. Enviaremos el numero %d a nuestros cientificos\ndel Massachussets Institute of Technology\npara que comprueben si es primo o no.\n\n", n);
while(cuenta++ < retardo);
system("cls");
if(n == 0||n == 1||n == 2||n % 2 == 0)
{
printf("\n\n\n\n\n\n\n\n\n\n\n\n\nLo sentimos. El numero %d no es primo.");
getch();
system("cls");
eleccion();
}
while(m <= sqrt(n)||n % m != 0)
{
m = m + 2;
}
if(m <= sqrt(n))
{
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n%d es primo.", n);
getch();
system("cls");
eleccion();
}
if(n % m == 0)
{
printf("\n\n\n\n\n\n\n\n\n\n\n\n\nLo sentimos. El numero %d no es primo.");
getch();
system("cls");
eleccion();
}
}
void eleccion(void)
{
char n, s;
printf("\n\n\n\n\n\n\n\n\n\n\n\n\nDesea realizar otro calculo? S/N");
if(getchar() == n)
{
printf("\n\nHasta luego!");
getch();
exit(0);
}
if(getchar() == s) calculo();
if(getchar() != n&&getchar() != s);
{
printf("\n\n\n\n\n\n\n\n\n\n\n\n\nPor favor, realize una seleccion valida.");
eleccion();
}
}
Gracias por la ayuda!