Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - AlkatraaZ

#1
igualmente ahora solo calcula hasta el primo 61... creo que es el 16º, despues no arroja ningun valor y queda ejecutando indefinidamente... ya me voy a poner a hacerle una prueba de escritorio a ver que esta fallando...
#2
do-while, aunque no lo creas me diste la solucion al de los primeros N primos jajaj
ayer a la noche estaba teniendo un problema, si yo queria encontrar los 10 primeros primos, me daba solamente 2, 3 y el programa quedaba ejecutando, como en un bucle... este era el codigo:
Código (cpp) [Seleccionar]
#include <iostream>
#define pl '\n'
#include <cstdlib>
#include <cstdio>
using namespace std;
/*Determine los 1000 primeros primos.*/
int main(int argc, char *argv[]) {
int n=2,c=n-1,suma,p,contp=0;
cout<<"Ingrese la cantidad de numeros primos que desea obtener"<<pl;
cin>>p; //p=cantidad de primos que quiero obtener
while (contp<p)//mientras los primos que obtube<los que quiero...
{
while (c>1)
{
suma*=n%c;
c-=1;
}
if (suma!=0)
{
cout<<"El numero "<<n<<" es primo"<<pl;
contp++;//cuenta que obtubo un primo
}
suma=1; //<- me faltaba esto!
n++;//
c=n-1;
}
system("PAUSE");
return 0;
}


yo pensaba que cuando el numero no era primo (como seria el caso del 4, que no me aparecia) y pasaba por el lado falso del if no hacia n++, estuve largo rato rompiendome la cabeza hasta que me di cuenta que me faltaba volver a darle un valor distinto de 0 a suma, sino una vez que un numero no fuera primo, en adelante suma iba a ser siempre 0, que error tonto...
#3
Cita de: do-while en  4 Julio 2012, 09:19 AM
¡Buenas!

Tienes un  gran error en tu primer codigo. Estas multiplicando la variable suma por algo sin haberla inicializado, por lo que en principio puede tener cualquier valor, incluido el cero (es mas, en C++ creo que se inicializa a cero por defecto). Por lo que cualquier resultado de multiplicar suma por otro valor podria ser siempre cero, lo que te daria un falso negativo en la busqueda de primos. Tienes que inicializar suma a uno.

Intenta inicializar las variables o hacerles una asignacion antes de utilizarlas con un valor que tenga sentido con el uso que les vayas a dar.

¡Saludos!

Muy por el contrario amigo, creo que nunca se inicializan en 0, por eso es que los inicializo cuando necesito que sean 0 o algun valor especifico...
por darte un ejemplo:
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main(int argc, char *argv[]) {
int asd;
cout<<asd;
return 0;
}


este codigo devuelve como valor de asd el numero 2130567168

Pero por las dudas voy a tomar en cuenta tu consejo, no cuesta nada y nunca esta de mas ^^
Ahora me voy a seguir luchando con el de calcular los N primeros primos :P
#4
Cita de: DickGumshoe en  3 Julio 2012, 23:18 PM
Yo lo que haría sería una función que calcule si cierto número es primo o no (en vez de ponerlo en main(), para que lo que viene después sea más fácil).

Entonces, con un bucle for, iría incrementando una variable en uno, y calculando si el valor de dicha variable es un número primo mediante la función anterior. En caso de serlo, aumentas una variable llamada contador y guardas el número primo en un vector. Cuando el contador llegue a 10, tendrás los 10 primeros números primos.

Saludos.
todavia no llegue a la parte de funciones, voy leyendo cada unidad y haciendo los ejercicios propuestos, pero me gusta tu idea :P

Cita de: ralymontes en  3 Julio 2012, 22:47 PM
No entendi muy bn tu codigo, pero para el segundo problema que harás, en realidad, pues me gusa mucho :D, lo hice tambien cuando iniciaba (bueno, uno parecido), y es un ejemplo padre de programacion.... el grano.

Aquella vez lo que tenia que hacer era si me daban 10 (como en tu ejemplo) debia sacar por pantalla los numeros primos que hay hasta el 10, en éste caso sería 2, 3, 5 y 7.

Entocnes lo que hice fue establecer un arreglo (si no mal recuerdo utilice 2 for anidados...) de tamaño N (N=el numero ingresado) y con un indice recorrer cada posicion (logico, cada posicion es un numero de arreglo, solo cuida si inicias desde 0 ó desde 1 XD ) , y dividirlo entre TODOS los numeros que hay desde 1 hasta N, y contar las veces que i%N==0 (siendo N la posicion del arreglo), al final, el numero de veces que se cumple aesa condicion debe ser igual a 2 ... ;)

Ojalá me hayas entendido.

Saludos, Raly.
te referis a algo asi no (no es de mi autoria, lo busque por internet)
Código (cpp) [Seleccionar]
int main()
{
int n=0,c=0,c2=0,res=0,nc=0;
cout<<"Introduce el limite de numeros: "; cin>>n;
for(c=1;c<=n;c++)
{
for(c2=1;c2<=c;c2++)
{
res=c%c2;
if(res==0)
{
nc++;
}
}
if(nc==2)
{
cout<<c<<" ";
}
nc=0;
}
cout<<pl;
system("PAUSE");
}


Cita de: BlackZeroX (Astaroth) en  4 Julio 2012, 00:33 AM
Usa la Criba de Eratóstenes para calcularlos, en el foro ya se han hecho varios códigos (ni me los pidas).

* Inclusive en wikipedia esta el código en varios lenguajes...

Dulces Lunas!¡.

la criba de eratostenes es el codigo que le acabo de pasar a Raly (a grandes rasgos claro) que como el bien dice si yo pongo 10, en vez de darme los 10 primeros numeros primos te da todos los primos menores que 10 (wiki says: La criba de Eratóstenes es un algoritmo que permite hallar todos los números primos menores que un número natural dado N)
#5
Programación C/C++ / calcular numeros primos
3 Julio 2012, 22:25 PM
Buenas tardes gente, soy bastante nuevo en el mundo de la programacion y estoy haciendo algunos ejercicios de operadores y estructuras de control, uno me pedia que calcule si un numero es primo o no, lo calcule de esta manera:
Código (cpp) [Seleccionar]
#include <iostream>
#define pl '\n'
#include <cstdlib>
using namespace std;
/*Leer un numero natural N. Determinar con un mensaje alusivo si es primo.*/
int main(int argc, char *argv[]) {
int n,c,suma,x;
cout<<"Calcular si un numero es primo"<<pl;
cout<<"Ingrese un numero"<<pl;
cin>>n;
while (n<=1){
cout<<"ERROR: El numero ingresado es incorrecto"<<pl;
cout<<"ingrese un numero"<<pl;
cin>>n;
}
c=n-1;
while (c>1){
x=n%c;
suma*=x;
c--;
}
if (suma==0) {
cout<<"El numero "<<n<<" no es primo"<<pl;
}
else {
cout<<"El numero "<<n<<" es primo"<<pl;
}
system("PAUSE");
return 0;
}


Creen que me complique mucho de alguna manera?

Y ahora estoy intentando hacer uno que calcule una cantidad x de numeros primos (osea, si pongo 10, que devuelva 2, 3, 5, 7, 11, 13,  17, 19, 23, 27) pero no lo pude adaptar, como me recomiendan hacerlo?

Desde ya muchas gracias.
Tomas.