Saludos, les presento el siguiente ejercicio, El programa consiste en, dependiendo de la opcion que pulse el usuario, Sacar una lista de numeros primos o el factorial de un numero, El programa corre perfectamente:
#include<stdio.h>
#include<stdlib.h>
#undef abs
#define p printf
#define s scanf
int primos(int c)
{
int a,j,pr;
pr=1;
for(a=2 ; a<=c ; a++)
{
for(j=2 ; j<=a/2 ; j++)
if((a%j)==0)
pr=0;
if(pr)
p("\n%d\n",a);
pr=1;
}
}
long int factorial(long int num1)
{
if((num1==0) || (num1==1))
return 1;
else
return num1*factorial(num1-1);
}
main()
{
int op,num2;
long int num1;
do{
p("Introduzca Un Numero: \n");
s("%d",&num1);
if(num1<0){
printf("Error Debe de ser un numero Mayor a 0\n\n"); }
}while(num1<0);
num2=abs(num1);
do{
p("\n----Que desea hacer?---\n");
p("1. Serie de numeros primos del 1 al %d\n",num1);
p("2. Sacar Factorial de %d\n",num1);
p("3. Salir\n");
s("%d",&op);
switch(op)
{
case 1:
p("Esa Fue La Serie De Numeros Primos Del 1 al %d\n\n", num1, primos(num1));
system("pause");
case 2:
if(num2>50)
p("El valor es muy grande");
else
p("El factorial es: %d\n",factorial(num1));
}
}while(op!=3);
}
El problema de logica que tengo, es en cuanto a la primera funcion(Primos), El 2do for nunca se cumple, y ademas de eso, poniendo como caso que el usuario introdujera 50, el 2do for simplemente llegaria a 25 y alli se detendria, ayuda?... Como dije, el programa corre perfectamente y hace lo que debe, pero no entiendo como se ejecuta esa funcion...