detectando numero primos (problema)

<< < (2/2)

Og.:
Código
bool isPrime(unsigned int x)
{
   if(x)
    {
       bool check = true;
       for(int i = 2; i<x/2;i++)
           if(!x%i)
               check = false;
       return check;
    }
   return false;
}

43H4FH44H45H4CH49H56H45H:
Si hago:

Código
if(isPrime(8)) printf("es primo\n");
Código
if(isPrime(4)) printf("es primo\n");
Código
if(isPrime(5)) printf("es primo\n");

En todas devuelve que es primo  :huh:
Como utilizas tu código??

Darioxhcx:
Cita de: dr.~ en 17 Mayo 2010, 02:22 am

Código
Prueba con esto:
 
#include <stdio.h>
main () {
    int ent, res, x;
    scanf("%d",&ent);
    for ( x = 2;x < (int)(ent / 2);x++) {
        res = ent % x;
        if (res==0){
  printf("%d NO es primo\n",ent);
  x = ent + 1;
}
    }
}

Conste que esto fue un poco mejorado, sobre todo en el for, en la condición para finalizar el ciclo.
Valga la aclaración que modificar la variable de un ciclo incondicionado, no es muy bien vista... así como tampoco un break. Lo ideal para este tipo de casos, según planteas la solución es aplicar un ciclo condicionado.

gracias , recien empiezo con lo que es c , me faltan algunas cosas como funciones ,punteros y otras como pa poder tenerlo mas claro
Cita de: Alex@ShellRoot en 17 Mayo 2010, 02:34 am

Y que pasa si ingreso el numero 1. Pwned!

una ves echo el codigo y funcionando , se evaluaria si es 1 y no pasaria a otra instancia , diciendo q es 1 es primo o se lo que sea ;D ya lo tenia en cuenta ;D
saludos

Karman:
Cita de: Og. en 17 Mayo 2010, 02:54 am

Código
bool isPrime(unsigned int x)
{
   if(x)
    {
       bool check = true;
       for(int i = 2; i<x/2;i++)
           if(!x%i)
               check = false;
       return check;
    }
   return false;
}


hay un pequeño error:

Código
bool isPrime(unsigned int x)
{
   if(x)
    {
       bool check = true;
       for(int i = 2; i<x/2;i++)
           if(!(x%i))
               check = false;
       return check;
    }
   return false;
}

de todas formas, no lo probé en profundidad, pero me hace que debería funcionar...

S2

Og.:
Muy cierto lo que dijo karman, el ! tiene prioridad sobre % así que debe quedar !(x%i) en el if.

Navegación

[0] Índice de Mensajes

[*] Página Anterior