elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Ayuda algoritmo que genera la lista de los N primeros numeros primos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda algoritmo que genera la lista de los N primeros numeros primos  (Leído 32,528 veces)
models

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Ayuda algoritmo que genera la lista de los N primeros numeros primos
« en: 1 Noviembre 2005, 18:14 »

Tengo que hacer 2 algoritmos,uno que calcule el factorial de un numero y otro este de los numeros primos.El del factorial creo que me ha salido pero este no tengo ni idea por mas vueltas que le doy a la cabeza.

FACTORIAL

Leer N
FACT=1
Para I de 1 a N hacer
        FACT=FACT * I
FinPara
Escribir FACT

FinAlgoritmo

___________________________________________


Alguien me puede ayudar con el de los numeros primos???
Por mas que le doy vueltas no se como generar la lista de los N primeros numeros primos,asi que igual lo dejo sin hacer y a rodar,que tengo la cabeza que me echa humo

Muchas gracias de antemano


En línea

sowher

Desconectado Desconectado

Mensajes: 204


Programar es un arte diseñemos arte


Ver Perfil
Re: Ayuda algoritmo que genera la lista de los N primeros numeros primos
« Respuesta #1 en: 1 Noviembre 2005, 19:07 »

Ojala esto te sirva ..
Código:
PROGRAMA
leo limite
num=1
MQ num<=limite Haga
    Si num<=3
        Imprima Num
    Sino Si num % 2 == 0
                Break
            Sino
                x=3
                raiz=RaizC(num)
                MQ x<=raiz Haga
                    Si num % x ==0 break SI
                    x= x+2
                FinMQ
                imprima num
            FinSi
    FinSi
num=num+1
FinMQ
FIN PROGRAMA

Suerte...


En línea

models

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda algoritmo que genera la lista de los N primeros numeros primos
« Respuesta #2 en: 1 Noviembre 2005, 20:36 »

No lo entiendo muy bien,pero muchas gracias de todas maneras,te lo agradezco,lo dejaré como lo tengo,osea nada,y ya veré en clase a ver
En línea

CA

Desconectado Desconectado

Mensajes: 159


Aiya Meldonya


Ver Perfil
Re: Ayuda algoritmo que genera la lista de los N primeros numeros primos
« Respuesta #3 en: 1 Noviembre 2005, 22:30 »

Te pongo el del factorial que lo que tu has puesto creo que lo tienes mal.

ALGORITMO factorial

entero n,accum

INICIO:

leer(n)

  mientras n <> 1 hacer
     accum = accum *n
     n = n - 1
  fin_mientras
escribir(n)
FIN


N tiene que ir bajando de 1 en 1 en el que tu ponias i siempre tendria el mismo valor.
     
En línea

Del gran mar he llegado a la tierra media y esta sera mi morada y la de mis descendientes hasta el fin del mundo.
Siuto
Colaborador
***
Desconectado Desconectado

Mensajes: 1.588


Que puedo decir??


Ver Perfil WWW
Re: Ayuda algoritmo que genera la lista de los N primeros numeros primos
« Respuesta #4 en: 1 Noviembre 2005, 23:51 »

Ahi te dejo un ejercicio que hice de los numeros primos.
En los posts pegados de la parte de ejecrcicios hay otras respuestas.

Código:
#include<stdio.h>

/* ejercicio Nº 105 de foro.elhacker.net */
/* http://foro.elhacker.net/index.php/topic,35110.0.html */

/* creado por Siuto, siuto25[at]gmail[dot]com */

int main(void)
{
int c;
int i=0; /* contador de numeros encontrados */
int n=2; /* numeros primos */
int q=1; /* numeros por los q se divide n */

printf("escribi la cant de numeros primos que queres ver: ");
scanf("%d", &c); /* introducir cant de numeros a imprimir */

printf("\n\n");

while(i<c) /* cant de numeros a imprimir */
{
if(n>=q)
{
q++;

if(((n%q)==0) && (n!=q)) /* si no es primo */
{
n++;
q=1;
}

if((n%q)==0 && (n==q)) /* si es primo */
{
printf("%d, ", n);
n++;
i++;
q=1;
}

}
else n++;
}

printf("\nPresione una tecla para salir...\n");
getch();
}
En línea

calle7

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Ayuda algoritmo que genera la lista de los N primeros numeros primos
« Respuesta #5 en: 14 Febrero 2009, 00:20 »

OK muchachos ahi les va el codigo para poder saber si un numero cualquiera es Primo o no lo es.

CODIGO C++:

#include<iostream.h>

int main()

{
     int  i,n,band;
     
     cout<<"\n\n\tNumeros Primos\n";
     cout<<"\t==================\n\n";
     cout<<"\tIngrese un Numero Entero : ";
     cin>>n;
     i=(n/2);
     band=1;    //Hasta el momento lo considero como Primo
     while(i>1)
    {
       if(n%i==0)
       band=0;    // Hasta el momento lo considero como  No Primo
       i=i-1;
    }
    if(band==1)
      cout<<"\t El Numero Ingresado es PRIMO";
    else
      cout<z"\t El Numero Ingresado No es Primo";


   getche();
   return 0;

}


Asi de sencillo: CopyRight   Moisés Calle Luque  -- Lima -- Perú
En línea

ghastlyX
Colaborador
***
Desconectado Desconectado

Mensajes: 1.900



Ver Perfil
Re: Ayuda algoritmo que genera la lista de los N primeros numeros primos
« Respuesta #6 en: 14 Febrero 2009, 02:24 »

Citar
OK muchachos ahi les va el codigo para poder saber si un numero cualquiera es Primo o no lo es.
Eso es un test de primalidad, no una forma de generar los n primeros primos. Además, la forma que tienes de comprobar si es primo es la más ineficaz, con un cambio trivial podrías ahorrarte la mitad de las comparaciones y además puedes podar más el bucle con otro cambio simple (¿para qué seguir mirando si es primo cuando sabes que no lo es?). Pese a eso, hay test de primalidad más eficientes, aunque más complicados.

Para generar los n primeros primos, yo recomiendo la criba de Eratóstenes, es un algoritmo que se puede programar de forma muy sencilla con vectores de booleanos por ejemplo.

Para el factorial, la forma recursiva de calcularlo es ineficiente si se realizan varias peticiones. Puedes hacerlo por dinámica así hasta un determinado n:
Código
  1. vector<int> f(n);
  2. f[0] = 1;
  3. for (int i = 1; i < n; ++i) f[i] = i*f[i - 1];
  4.  

O para cualquier número con una estrategia descendente:
Código
  1. long long factorial(map<int, long long>& f, int n) {
  2.    if (n == 0 or n == 1) f[n] = 1;
  3.    else if (not f.count(n))
  4.        f[n] = n*factorial(f, n - 1);
  5.    return f[n];
  6. }

De estas dos formas no repites cálculos inútilmente.

Un saludo de ghastlyX ;)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines