Programación General > C/C++

 Problema con numeros primos

(1/1)

SkullFlower:
Hola,

Quiero hacer un programa que imprima la suma de todos los números primos menores a 2,000,000 pero cuando ejecuto el código me da un numero negativo o algo así.  :wacko:

Ya lo probé con números mas pequeños, por ejemplo que haga la suma de los números primos menores a 10,000 y si me da bien el resultado pero supongo que me da error en el de 2,000,000 por que debería de usar long o algo parecido pero lo use y de todos modos me salia un numero negativo, asi que mi duda es:

como puedo hacer para que me de el resultado bien?

este es el codigo que tengo:


--- Código: C ---#include<stdio.h>int Primos(int x);int main(){    int x, y, z;    y = 0;    x = 2000000;    for(x; x>=2; x--){        if(Primos(x)){            y += x;        }    }    printf("%dn", y);    return 0;}int Primos(int x){    int y;    int cont = 0;    for(y=1;y<=x; y++){        if(x%y==0){            cont++;        }    }    if(cont==2){        return 1;    }    return 0;} 
este es mi código usando long, pero pues nunca lo había usado así que puede que tenga algo mal y por eso no me de bien el resultado:


--- Código: C ---#include<stdio.h>int Primos(unsigned long int x);int main(){    unsigned long int x, y, z;    y = 0;    x = 2000000;    for(x; x>=2; x--){        if(Primos(x)){            y += x;        }    }    printf("%dn", y);    return 0;}int Primos(unsigned long int x){    unsigned long int y;    unsigned long int cont = 0;    for(y=1;y<=x; y++){        if(x%y==0){            cont++;        }    }    if(cont==2){        return 1;    }    return 0;} 

posman:
Tal vez el resultado esta bien, pero como estas utilizando %d en la funcion printf, con esos haces que imprima un entero.
Debes utilizar el formato para imprimir enteros largos sin signo, no recuerdo exactamente cual es:

--- Código: Text ---printf("%l",y);printf("%ll",y);printf("%ul",y);printf("%lu",y);printf("%llu",y); 

Riskz:

--- Cita de: "posman" ---
--- Código: C ---printf("%lu",y); 
--- Fin de la cita ---

Como bien dijo posman, quizas el problema es con el formato del entero cuando usas printf.
Para un unsigned long int esa es la opcion correcta.

Saludos

Navegación

[0] Índice de Mensajes

Ir a la versión completa