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í.
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:
#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;
}
}
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:
#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;
}
}
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;
}