Quien sepa C, y tenga ganas que me eche una mano.

#1
Buenas a todos.

Tengo un problema con un programa, en concreto con las funciones.
Dejo el código y abajo la explicación de cada función.

Este código calcula los 100 primeros nº primos.

dev++

Código:
#include <stdio.h>
#include <stdlib.h>

/* devuelve 1 si numero es primo y 0 si no lo es*/
int esPrimo (int numero)
{
  int divisor=2;
  int resto=0;
  
  for (divisor=2; divisor<numero; divisor++)
      {
        resto=numero%divisor;
          if (resto==0)
           {printf ("0000");   // Esto es para ver si entra (si entra)
             resto=numero;
           }
          if (resto==1)
          {  printf ("1111");  //Aqui tambien.
             resto=numero;
              break;
        }  }   
    
    
}


void primos (int  *primo)
{
   int posible=2;
   int contador=0; 
   do{ 
       if (esPrimo(posible) == 1){
          primo[contador] = posible;
          contador++;
       }
       posible++;
    } while (contador<100);
}
  
 int main ()
  {
     int primo [100]; 
     primos (primo);   
     printf ("%d", primo);       
          
  }

Bien pues este código consta de 2 funciones y la función principal main.

1ª Función: "primos"
2ª Función: "esPrimo"

=================================================================

La función primos se encarga de generar numeros desde 2 hacia delante con la variable "posible" y la variable "contador" de contar cuantos nº primos se han guardado.

------------------------------------------------------------------------------------

La función esPrimo se encarga de recibir el dato de la función primos e ir dividiendo desde 2 hasta (posible-1).


Entonces si el nº que estamos comprobando es primo retorna un "1", si no es "0".

Aqui creo que esta el problema, deberia retornar el resto (1 o 0) a la función "primos" para que guarde el nº primo en caso de que fuese primo.


Disculparme por esta liosa explicación, seguro que falta alguna explicación más.

Pedirme cualquier dato que necesiteis.

Si podeis comentar algo se lo agradezco, tengo que entregarlo antes de las 12 asi que estaré atento.

Muchas gracias.
 
#2
Hi Not,
intenta con esto...
:)

int esPrimo (int numero)
{
int divisor=2;
int resto=0;
for (divisor=2; divisor<numero; divisor++)
{
resto=numero%divisor;
if (resto==0)return (0);
}
return (1);
}
void primos (int *primo)
{
int posible=2;
int contador=0;
do{
if (esPrimo(posible) == 1)
{
primo[contador] = posible;
printf("%i\n",posible);
contador++;
}
posible++;
} while (contador<20);
}
int main ()
{
int primo [100];
primos(primo);
getch();
}
 

Dr. Zoidberg

Well-known-Papá Pitufo
#4
Not:
Hay un libro que está "disponible" en la web y que se llama "The C Programming Language" escrito por Kernighan & Ritchie (los padres del lenguaje C).
Bueno...el tema es que deberías bajarlo y leerlo antes de seguir con las preguntas que estás haciendo... ;)
 

Temas similares

Arriba