elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 22:00  


Tema destacado: Recuperar cuenta de Google, GMail, Youtube

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Dudilla con un codigo para ver si un numero es primo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Dudilla con un codigo para ver si un numero es primo  (Leído 4,299 veces)
TheMaker


Desconectado Desconectado

Mensajes: 513



Ver Perfil
Dudilla con un codigo para ver si un numero es primo
« en: 31 Octubre 2007, 11:52 »

el code :


Código:
#include <iostream>
#include <cmath>
using namespace std;


int main(){
    int np,b,c;
    int x=0;
    cin>>np;
    np=abs(np);
    b=np-1;
    if(np!=0 && np!=1){
    do{
          c=np%b;
          if(c==0)
          x=1;
          b=b-1;
          }while(b>1);
          }
    if(((x==0)||(np==1))&&(np!=0))
    cout<<"primo";
    if(x==1||np==0)
    cout<<"no primo";
    system("pause");
    system("exit");
    }


Pues bien el programa funciona para todos los numeros excepto para el 2 que me dice que no es primo, xk?

Todos los demas m los hace bien 3,5,7 me dice con son primos y 4,6... me dicen k son no primos

pero si le meto 2 me suelta k es no primo.


En línea

Gibe money please or I report you
‭‭‭‭jackl007


Desconectado Desconectado

Mensajes: 1.381


[UserRPL]


Ver Perfil WWW
Re: Dudilla con un codigo para ver si un numero es primo
« Respuesta #1 en: 31 Octubre 2007, 13:32 »

coloca una condicion de que si el numero ingresado es "2" diga si qe si es primo...


En línea

TheMaker


Desconectado Desconectado

Mensajes: 513



Ver Perfil
Re: Dudilla con un codigo para ver si un numero es primo
« Respuesta #2 en: 31 Octubre 2007, 13:35 »

Pero a ver mi codigo deberia de funcionar para todos los numeros excepto para 0 y 1 que lo soluciono con los if's.

lo k quiero saber pork con 2 no va!!!!!! deberia de ir no lo entiendo
En línea

Gibe money please or I report you
SirLanceCC


Desconectado Desconectado

Mensajes: 1.090


Ver Perfil WWW
Re: Dudilla con un codigo para ver si un numero es primo
« Respuesta #3 en: 31 Octubre 2007, 13:49 »

Mira yo veo tu código poco claro... muy confuso,, lo cual hace que corregirlo sea más dificil... Mira este ejemplo que hice en java hace ya algún tiempo:
inumero es el entero leido, y el resto de las variables creo que son autoexplicatorias...
Código
//Boucle que divide el número N, introducido por el usuario, 
//entre todos los numeros anteriores a raiz cuadrada de N
for(contador = 2; contador < Math.sqrt(inumero); contador++){
//Divide el numero a comprobar
residuo = inumero % contador;
//Si el residuo es 0, significa que el numero NO es primo ya que se pudo dividir
if(residuo == 0){
//El numero NO es primo
primo = false;
//Salimos del boucle
break;
}
}//Fin del boucle
Usa nombres de variable más descriptivos para que tu código sea más claro.
En línea
Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 4.389


Clarin miente, TN opera y los giles regurgitan.


Ver Perfil WWW
Re: Dudilla con un codigo para ver si un numero es primo
« Respuesta #4 en: 31 Octubre 2007, 13:54 »

Si lo depuras veras que np es 2 y por lo tanto b es 1 y c 0 (2%1). Si c es 0 x es 1, b es 0 y termina el bucle.

Ya estamos en la linea 20, x sigue siendo 1 y np sigue siendo 2 asi que segun tu codigo no es primo.

Linea 22, x es 1, no es primo.

Tal vez sea mejor empezar de nuevo ...
En línea



La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
TheMaker


Desconectado Desconectado

Mensajes: 513



Ver Perfil
Re: Dudilla con un codigo para ver si un numero es primo
« Respuesta #5 en: 31 Octubre 2007, 14:23 »

Si lo depuras veras que np es 2 y por lo tanto b es 1 y c 0 (2%1). Si c es 0 x es 1, b es 0 y termina el bucle.

Ya estamos en la linea 20, x sigue siendo 1 y np sigue siendo 2 asi que segun tu codigo no es primo.

Linea 22, x es 1, no es primo.

Tal vez sea mejor empezar de nuevo ...
vale vale eso era lo k se me habia pasado
En línea

Gibe money please or I report you
TheMaker


Desconectado Desconectado

Mensajes: 513



Ver Perfil
Re: Dudilla con un codigo para ver si un numero es primo
« Respuesta #6 en: 6 Noviembre 2007, 14:57 »

weno al final hice esto:
Código:

#include <iostream>
#include <cmath>
using namespace std;

int main(){
    int numero;
    bool primo=true;
    cout<<"introduzca el numero ";
    cin>>numero;
    abs(numero);
   
       
    for(int i=2;i<numero;i++){
            if(numero%i==0)
            primo=false;
            }
   
    if(primo==true)
    cout<<"El numero insertado es primo\n";
    if(primo==false)
    cout<<"el numero insertado no es primo\n";
    system("pause");
    }
En línea

Gibe money please or I report you
BETA_V

Desconectado Desconectado

Mensajes: 131


HC


Ver Perfil
Re: Dudilla con un codigo para ver si un numero es primo
« Respuesta #7 en: 6 Noviembre 2007, 20:24 »

hola¨¨subo un codigo que hice hace algun tiempo ,,espero que sirva ,,sino igual,,jejej

Código
#include <stdlib.h>
#include <stdio.h>
 
int divisible(int a,int b){
  return(a%b==0);
}
 
int main (int argc, char **argv)
{
int n;
printf("Ingrese un numero para determinar si es primo o no\n");
scanf("%d",&n);
int primo=1;
int divisor=2;
do
{
    if (divisible(n,divisor)==1) primo=0;
      else divisor+=1;
               }
while ((divisor<n)&& primo==1);
if (primo==1) printf("\n%d es primo\n",n);
 else printf("\n%d es compuesto\n",n);
return 0;
}
 
En línea
SirLanceCC


Desconectado Desconectado

Mensajes: 1.090


Ver Perfil WWW
Re: Dudilla con un codigo para ver si un numero es primo
« Respuesta #8 en: 6 Noviembre 2007, 20:25 »

Código
for(int i=2;i<numero;i++){
   if(numero%i==0){
       primo=false;
       break;
       }
}
 

Te recomiendo que uses el break para salir del for una vez que se encuentre que el numero es divisible. Imagina que ingresas el número 1234567890, el cual es divisible entre dos, por lo tanto no es primo. Pero tu programa hará todas las divisiones que faltan y en un número grande puede tardar.
En línea
BETA_V

Desconectado Desconectado

Mensajes: 131


HC


Ver Perfil
Re: Dudilla con un codigo para ver si un numero es primo
« Respuesta #9 en: 9 Noviembre 2007, 19:40 »

hola¡¡¡ el codigo que habia subido antes era erroneo  :P por que no tomaba el 2 como primo ,este esta arreglado,,,byeees,,ahh para THEMAKER,, diria que con el primer codigo que pusiste que te fijes en ves de un do while lo cambies por un while,espero que te sirva.
Código
#include <stdlib.h>
#include <stdio.h>
int divisible(int a,int b){
      return(a%b==0);
}
 
int main (int argc, char **argv) {
    int n;
    int i;
    for(i=1;i<10;i++){
     int primo=1;
     int divisor=2;
    while ((divisor<i)&& primo==1)  {      
        if (divisible(i,divisor)==1) primo=0;      
        else divisor+=1;                
        }
 
        if (primo==1) printf("\n%d es primo\n",i);  
        else printf("\n%d es compuesto\n",i);
        }
        system("pause");
        return 0;}
 
En línea
(*<>*) HaCKinG_SkrIP

Desconectado Desconectado

Mensajes: 207



Ver Perfil
Re: Dudilla con un codigo para ver si un numero es primo
« Respuesta #10 en: 13 Noviembre 2007, 01:13 »

Este está relacionado:

/*Este programa calcula la suma de todos los enteros positivos no primos comprendidos entre
dos números entero positivos dados A y B*/

Código:
#include <stdio.h>

void main ()


{
int A, B, b, c, i, sum=0; /*Inicializo la variable "sum"*/


do /*Para evitar que el usuario introduzca los valores de forma incorrecta, por el orden o por
    ser numeros negativos*/

{ printf("Escriba dos numeros enteros positivos, de menor a mayor separados de un blanco.\nSe calculara la suma de todos los numeros enteros positivos no primos\ncomprendidos entre esos dos numeros\n");
scanf("%d %d", &A, &B);

if ((A>=B) || (A<=0))
            printf("\nRecuerda que el valor de A debe ser menor que el de B, y por lo tanto,\ndiferentes. Y ademas los dos deben ser positivos\n\n");
}while ((A>=B) || (A<=0));




if( B<4)
printf("La suma de los numeros enteros positivos no primos entre %d y %d es 0\n\n",A,B);
/*Esto lo hago pq entre 0 y 3 todos son primos*/

c=A;/*Empezamos a partir del valor más pequeño*/


while( (c>=A) && (c<=B) ) /*Compruebo que el numero esté dentro del rango establecido
por A y B*/

{ i=2; /*Inicializo la variable "i"*/

do /*Compruebo si el numero es primo*/

{
b= c%i;

i++;

}while( (b!=0) && (i<=c/2) );

if(b==0) /*En caso de no ser primo lo sumo*/
sum= sum + c;
c++;

}


printf("\nLa suma de todos los  numeros enteros positivos no primos\ncomprendidos entre %d y %d es de %d\n\n",A, B, sum);
/*Simplemente escribo el resultado*/
}
En línea

(*<>*) HaCKinG_SkrIP

Desconectado Desconectado

Mensajes: 207



Ver Perfil
Re: Dudilla con un codigo para ver si un numero es primo
« Respuesta #11 en: 13 Noviembre 2007, 01:22 »

el code :


Código:
#include <iostream>
#include <cmath>
using namespace std;


int main(){
    int np,b,c;
    int x=0;
    cin>>np;
    np=abs(np);
    b=np-1;
    if(np!=0 && np!=1){
    do{
          c=np%b;
          if(c==0)
          x=1;
          b=b-1;
          }while(b>1);
          }
    if(((x==0)||(np==1))&&(np!=0))
    cout<<"primo";
    if(x==1||np==0)
    cout<<"no primo";
    system("pause");
    system("exit");
    }


Pues bien el programa funciona para todos los numeros excepto para el 2 que me dice que no es primo, xk?

Todos los demas m los hace bien 3,5,7 me dice con son primos y 4,6... me dicen k son no primos

pero si le meto 2 me suelta k es no primo.

Yo hice uno super sencillo y funciona a la perfección:

Código:
#include <stdio.h>

void main()

{
int num, i, res;


printf("Intoduzca un numero para comprobar si es primo:\n");
scanf("%d",&num);


for(i=2, res=1;i<(num/2),res!=0;i++)
res=num%i;

if((num==2)||(num==1))
res=1;

if(res==0)
printf("\nEl numero %d NO es primo\n",num);

else
printf("\nEl numero %d es primo\n",num);

}
En línea

opterman

Desconectado Desconectado

Mensajes: 87



Ver Perfil
Re: Dudilla con un codigo para ver si un numero es primo
« Respuesta #12 en: 13 Noviembre 2007, 21:28 »

Nas a todos
TheMaker tu error es muy evidente, en el while pones que sigua el bucle mientras sea b>1, pero si se da el caso de que b == 1 el bucle no sigue y es por eso que el 2 no lo detecta como primo , para eso está el operador >= mayor o igual


Saludos Opterman
En línea
(*<>*) HaCKinG_SkrIP

Desconectado Desconectado

Mensajes: 207



Ver Perfil
Re: Dudilla con un codigo para ver si un numero es primo
« Respuesta #13 en: 13 Noviembre 2007, 22:46 »

Nas a todos
TheMaker tu error es muy evidente, en el while pones que sigua el bucle mientras sea b>1, pero si se da el caso de que b == 1 el bucle no sigue y es por eso que el 2 no lo detecta como primo , para eso está el operador >= mayor o igual


Saludos Opterman

b>=1  ==>  b>0   No es lo mismo?
En línea

TheMaker


Desconectado Desconectado

Mensajes: 513



Ver Perfil
Re: Dudilla con un codigo para ver si un numero es primo
« Respuesta #14 en: 14 Noviembre 2007, 16:09 »

anda que leis jaaj, mi primer code era una caca si seguis leyendo a la mitad del post pongo mi code que ya si funciona jeje
En línea

Gibe money please or I report you
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python] - ¿Es primo?
Scripting
Meta 9 2,421 Último mensaje 6 Diciembre 2010, 06:56
por [L]ord [R]NA
Verdad que es imposible el algoritmo numero primo sin usar ciclos, ni funciones.
Programación General
Aikanáro Anário 11 1,917 Último mensaje 20 Agosto 2011, 01:12
por someRandomCode
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines