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...
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ú#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;
}
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!
#include <iostream>
using namespace std;
int main(int argc, char *argv[]) {
int asd;
cout<<asd;
return 0;
}
Cita de: DickGumshoe en 3 Julio 2012, 23:18 PMtodavia no llegue a la parte de funciones, voy leyendo cada unidad y haciendo los ejercicios propuestos, pero me gusta tu idea
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.
Cita de: ralymontes en 3 Julio 2012, 22:47 PMte referis a algo asi no (no es de mi autoria, lo busque por internet)
No entendi muy bn tu codigo, pero para el segundo problema que harás, en realidad, pues me gusa mucho , 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.
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!¡.
#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;
}