Página 2 de 3 PrimerPrimer 123 ÚltimoÚltimo
Resultados 11 al 20 de 23

Tema: Numeros primos

  1. #11
    Dragonauta en Proceso
    Fecha de ingreso
    Nov 2008
    Mensajes
    80
    Gracias
    5
    Agradecido 19 veces en 10 Mensajes

    Predeterminado Re: NUMEROS PRIMOS

    Oigan aun puedo entrar a competir????
    igual ahi les va mi codigo

    //////////////////Created by Roguer////////////////////////
    #include<iostream>
    #include<stdlib.h>
    using namespace std;

    int main()
    {
    int numero=3;
    int limite;
    bool primo=true;
    cout<<"1,2,";
    while(numero<20000)
    {
    limite=numero/2;
    primo=true;
    for(int i=3;i<limite;i+=2)
    {
    if(numero%i==0)
    {
    primo=false;
    }
    }
    if(primo)
    {
    cout<<numero<<",";
    }
    numero+=2;
    }
    cout<<endl;
    system("pause");
    return 0;
    }
    ///////////////////////////fin//////////////////////////////////

    Espero les guste es bastante rapido
    y ojala no tenga errores en la logica, si detectan algo me avisan
    jejejeje

  2. #12
    Recien Nacido
    Fecha de ingreso
    Sep 2008
    Mensajes
    35
    Gracias
    0
    Agradecido 1 vez en 1 Mensaje

    Predeterminado Re: NUMEROS PRIMOS

    0.016 ms demora el mio :P

    GNU nano 2.0.7 Fichero: primeTest.java

    import java.util.*;
    public class primeTest{
    public static boolean primes&#91;] = new boolean[20000];
    public static void main(String args&#91;]){
    Arrays.fill(primes,true);
    for(int n = 2;n<=Math.sqrt(primes.length);n++)
    if(primes[n])for(int k = n*n;k<primes.length;k+=n)primes[k]=false;
    int conta = 1;
    for(int n = 3;n<primes.length;n+=2)
    if(primes[n])conta++;
    System.out.println(conta);
    }
    }


    roguer lo podrias hacer mas rapido, agregale un break cuando le das false al booleano de prime

    Monje nunca dijiste nada :P.. todo falso como el de premaraton phone..me quede esperando que calificaras :P
    my.opera.com/phicar

  3. #13
    Recien Nacido
    Fecha de ingreso
    Sep 2008
    Mensajes
    35
    Gracias
    0
    Agradecido 1 vez en 1 Mensaje

    Predeterminado Re: NUMEROS PRIMOS

    A pedido de Dragon, Resultados:

    roguer
    &#160; &#160; &#160; &#160; &#160; 0.612
    &#160; &#160; &#160; &#160; &#160; 0.632
    &#160; &#160; &#160; &#160; &#160; 0.640
    lenguaje:c++
    promedio 0.628s

    csarlg
    &#160; &#160; &#160; &#160; &#160; 0.050
    &#160; &#160; &#160; &#160; &#160; 0.040
    &#160; &#160; &#160; &#160; &#160; 0.050
    lenguaje:c++
    promedio 0.046

    Mandrake
    &#160; &#160; &#160; &#160; &#160; 0.768
    &#160; &#160; &#160; &#160; &#160; 0.769
    &#160; &#160; &#160; &#160; &#160; 0.770
    lenguaje:java
    prfomedio 0.769

    Radical
    &#160; &#160; &#160; &#160; &#160; &#160; 0.065
    &#160; &#160; &#160; &#160; &#160; &#160; 0.072
    &#160; &#160; &#160; &#160; &#160; &#160; 0.069
    lenguaje:c++
    promedio 0.068

    Phicar
    &#160; &#160; &#160; &#160; &#160; &#160; 0.316
    &#160; &#160; &#160; &#160; &#160; &#160; 0.313
    &#160; &#160; &#160; &#160; &#160; &#160; 0.271
    lenguaje:java
    promedio 0.300


    lo hice con time...les dejo foto...modifique los programas de los que usaron windows un poquito...(basicamente nada) pero para que funcaran toco cambiar un par de lineas que no afectan en nada el algoritmo

    *1 no es primo :P
    *Zefiro tenia mal el resultado
    *Hay ganador java y ganador c++ porque no hay punto de comparacion entre los dos lenguajes en cuanto a velocidad se refiere..memoria contra maquina virtual es como jodido
    *Mambru se fue a la guerra, que dolor que dolor que pena

    my.opera.com/phicar

  4. #14
    Administradores
    Fecha de ingreso
    Aug 2008
    Ubicación
    Manizales, Caldas, Colombia, Colombia
    Mensajes
    1,471
    Gracias
    723
    Agradecido 705 veces en 307 Mensajes

    Predeterminado Ganadores

    GANADORES

    Phicar HA GANADO CON JAVA
    0.316
    0.313
    0.271
    lenguaje:java
    promedio 0.300

    csarlg HA GANADO CON C++
    0.050
    0.040
    0.050
    lenguaje:c++
    promedio 0.046

    se les a añadido el premio que en este caso son 10 puntos de reputación, los próximos retos tendrán premios materiales.

  5. #15
    Dragonauta
    Fecha de ingreso
    Feb 2009
    Ubicación
    Santa Cruz - Bolivia
    Mensajes
    121
    Gracias
    12
    Agradecido 11 veces en 8 Mensajes

    Predeterminado

    hola q tal, aprovechando este tema me gustaria sabes como se hace el testeo de los codigos, hay programas para hacerlo????

  6. #16
    Dragonauta Oficial
    Fecha de ingreso
    Sep 2008
    Ubicación
    Mexico D.F
    Mensajes
    1,364
    Gracias
    98
    Agradecido 243 veces en 129 Mensajes

    Predeterminado

    Como que como se hace el testeo??? lo tienes que compilar


  7. #17
    Dragonauta
    Fecha de ingreso
    Feb 2009
    Ubicación
    Santa Cruz - Bolivia
    Mensajes
    121
    Gracias
    12
    Agradecido 11 veces en 8 Mensajes

    Predeterminado

    Si eso creo q ya lo sabia, creo q hice mal la pregunta, yo me referia a como obtienen el tiempo q tarda el programa en hallar los numeros primos... ej
    0.050
    0.040
    0.050
    Última edición por jakero; 03-17-2009 a las 10:14 AM

  8. #18
    Recien Nacido
    Fecha de ingreso
    Aug 2008
    Mensajes
    14
    Gracias
    0
    Agradecido 8 veces en 6 Mensajes

    Predeterminado tarde pero aqui estamos para participar

    Los números primos desde los tiempos de antigüedad, donde los matemáticos se cuenta que algunos números, son divisibles entre el 1 y los mismos números le consideraron, números primos. En la actualidad los números primos siguen siendo hoy estudiadas, y algunos de los números primos son pueden llenar hojas y hojas, pues constan de millones de dígitos.

    En nuestro caso para los programadores, los números primos tiene ciertas aplicaciones, en la criptografía, tales es el uso en la llave RSA, que maneja números primos grandes. Muchos de estos números tienen mas 500 dígitos,.la verificación de números primos son computacionalmente no son posibles pues pueden tardar varios años, por los tanto se inventaron distintos métodos algortimicos de tal modo que no sea engorroso, si no la comprobación de los números primos sea rápida y no lleva mucho tiempo, entre ellos esta el método de Pollard, métodos numéricos la mas usada es el método probabilística, que tiene un algoritmo muy interesante que es específicamente para números que tengan mayor a 100 dígitos. Java en su librería contiene este algoritmo, específicamente esta en la librería esta en BigInteger donde, el método es EsPrimo(BigInteger a) que devuelve mediante el método probabilística en forma true o false.
    Los numeros primos fueron atacados desde distintas ópticas de las matemáticas, como analizadores de la algoritmia, también de la teoría de números, para verificar un número primo, pues un numero primo que tiene cerca a 500 digitos y o mas pueden tardar varios años en verificarse.

    Uno de los métodos que se usan nórmalmente es dividir sucesivamente el numero que se quiere verificar sucesivamente desde 1 hasta el numero verificar: consideremos x el numero a verificar, entonces en nuestro programa seria:
    Sum=0
    for(I=1; i<=x;i++)
    {if(x%I==0)
    sum++;
    }
    if(sum>=3)
    print(no primo)

    else
    print(primo)

    este seria un algoritmo que verifica el numero si es primo o no, pero es muy engorroso y tardad varios segundos, otra idea seria, dividir el numero x/2 de tal modo el algoritmo quedaría:

    sum=0
    for(I=1; i<=x/2;i++)
    {if(x%I==0)
    sum++;
    }
    if(sum>=3)
    print(no primo)

    else
    print(primo)

    de manera que este algoritmo mejora por lo menos algunos segundos, pero no es la buena opcion, otra forma de plantearnos y por lo menos la mas efectiva es de la siguiente forma, sabemos que un numero x su raiz es raíz(x): veamos algunos análisis:;
    49 su raiz entera es 7
    5 su raiz entera es 2
    81 su raiz entera es 9
    en cada uno de los anteriores ejemplos la raiz va reduciendo de una forma radical las operaciones de comparación que se puede realizar
    , esto se puede generalizar de la siguiente forma en un algoritmo:

    sum=0
    for(I=1; i<=raiz(x);i++)
    {if(x%I==0)
    sum++;
    }
    if(sum>=3)
    print(no primo)

    else
    print(primo)

    que reduce radicalmente los números de comparaciones, ahora les presento mi algoritmo, que si tiene buenos resultados, por los menos, en el concurso de programación de la ACM donde participe, pero si éxitos algunos, el algoritmo es una modificación a la anterior, pero viene comparando de dos formas, uno va en sentido de avance y el otro en sentido de retroceso, veamos el algoritmo.
    sum==0
    Inf=1;
    sup=raiz(x)

    while(sum==0 && inf<=sup+1)
    {if(x%Inf==0||x%sup==0)
    sw=1;
    else
    inf++;
    sup--;
    }
    if(sum==1)
    print(no primo)

    else
    print(primo)


    entonces nuestro programa seria de la siguuientes forma, con los analisis anteriores y aplicando lla verifiacion del algoritmo de
    verificacion de numeros primos, seria de la siguiente forma:
    en este algoritmo
    cont=1; //inicializamos el contador de numeros primos, pues contamos el dos como primo, y el uno no es considerado primo.
    for(i=3; i<=200000;i=i+2)//pues se considera que los multiplos de dos no son primos, entonces solo verificamos 3,5,7,9,11,
    {if(veriprimo(i)) //verifica primo si es verdadero el cont aumenta en caso contrario no //ase nada
    cont++;
    }
    print(cont)


    aqui el codigo en java

    import java.util.*;
    import java.math.*;
    public class Primo
    {
    boolean veriprimo (int x)
    {
    boolean sw = true;
    int inf = 2;
    int sup = (int) (Math.sqrt (x));
    while (sw == true && inf < sup + 1)
    {
    if (x % inf == 0 || x % sup == 0)
    sw = false;
    else
    {
    inf++;
    sup--;
    }
    }
    return sw;

    }


    void calcula ()
    {
    Date a = new Date ();
    int i, s = 1;
    for (i = 3 ; i <= 20000 ; i += 2)
    {
    if (veriprimo (i) == true)
    {
    s++;
    }
    }
    Date b = new Date ();
    System.out.println (b.getTime () - a.getTime ());
    System.out.println ("el numero total de primos es " + s);
    }


    public static void main (String args [])
    {
    Primo p = new Primo ();
    p.calcula ();
    }
    }

    Como escribo por primera vez recibo las criticas y aceptó sugerencias.

    efrajdk

  9. #19
    Dragonauta
    Fecha de ingreso
    Jan 2009
    Mensajes
    165
    Gracias
    1
    Agradecido 30 veces en 21 Mensajes

    Predeterminado

    ya se ha terminado el reto? puedo participar por ejemplo con assembler o python?

    si no entonces lo hare solo por diversion xD
    Última edición por Tronador; 03-31-2009 a las 01:57 AM

  10. #20
    Dragonauta
    Fecha de ingreso
    Jan 2009
    Mensajes
    165
    Gracias
    1
    Agradecido 30 veces en 21 Mensajes

    Predeterminado

    Código PHP:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    __inline int fsqrt(__int16 numero)
    {
       
    float x = (float)(numero);
       
    float xhalf 0.5f x;
       
    register int i = *(int*)&x;
       
    0x5f3759d5 - (>> 1);
       
    = *(float*)&i;
       
    x*(1.5f xhalf*x*x);
       return (
    __int8)(1/x);

    }
    __inline int esprimo(__int16 numero)
    {
        
    register __int8 resultado;
        
    register __int8 raiz fsqrt(numero);

        
    __asm
        
    {
            
    mov axnumero
            mov bl
    2
            mov cx
    ax
            mov dl
    raiz
            cmp ax
    1
            je noprimo
            cmp ax
    2
            je primo
            div bl
            cmp ah
    0
            je noprimo
            mov bl
    3
            mov ax
    cx

        ciclo
    :
            
    div bl
            cmp ah
    0
            je noprimo
            add bl
    2
            mov ax
    cx
            cmp bl
    dl
            jb ciclo
            jmp primo

        primo
    :
            
    mov resultado1
            jmp fin

        noprimo
    :
            
    mov resultado0

        fin
    :

        }

        return 
    resultado;
    }
    int main(){

        
    register __int16 numero 1;
        
    register __int16 cont 0;
        
    clock_t t_init_fin;
        
    double diff;

        
    t_ini clock();
        while(
    numero 500)
        {
            if(
    esprimo(numero) == 1)
            {
                
    cont++;
            }
            if(
    numero 2numero+=2;
            else 
    numero++;
            
        }
        
    printf("Hay %d primos entre 1 y 500\n",cont);
        
    t_fin clock();
        
    diff = (double)(t_fin t_ini);
        
    printf("%.16g ciclo(s) de reloj\n"diff);


        
    system("pause");
        return 
    0;


    Me gustaria saber si valió la pena y si es mas rapido o solo fue perder tiempo en assembler xD

    Lo compile con Visual C++ 2005, y me da 0.001 en mi maquina PERO solo calcula la cantidad de primos entre 1 y 500 (es assembler de 16bits, el maximo numero que se almacena en un registro de 8bits es 511)

    Modifique el de cesrlg para que haga lo mismo que el mio (del 1 al 500 y que muestre solo cantidad), asi quedo:

    Código PHP:
    #include <iostream>
    #include <cstdlib>
    #include <ctime>
    using namespace std;


    struct nodo{
       
    unsigned long int val;
       
    nodo *sgte;
    };
    int cont 1;
    void calcular_primos(nodo *Raiznodo **Final, unsigned long int val);

    void main(){
      
    unsigned long int val 2;
      
    nodo *Lista, *Final;
      
    clock_t t_init_fin;
      
    double diff;

      
    Lista = new nodo;
      
    Lista->val val;
      
    Lista->sgte NULL;
      Final = 
    Lista;

      
    t_ini clock();
      while( 
    ){
           
    calcular_primos(Lista, &Final, ++val);
           if(
    val == 500){break;} //* Numero limite 100*//
      
    }
      
    cout<<"Hay "<<cont<<" numeros primos entre 1 y 500\n";
      
    t_fin clock();
      
    diff = (double)(t_fin t_ini);
      
    printf("%.16g ciclos de reloj\n"diff);
      
    system("pause>nul");
    }

    void calcular_primos(nodo *Raiznodo **Final, unsigned long int val){

      
    bool es_primo true;
      
    nodo *Raiz;

      while(
    != NULL){
        if(
    val%(p->val) == 0){
                
    es_primo false;
                break;
        }
        if((
    p->sgte) != NULL){
              if(((
    p->sgte)->val)*((p->sgte)->val) > val){
                         break;
              }
        }
        
    p->sgte;
      }

      if(
    es_primo){
             (*Final)->
    sgte = new nodo;
             ((*Final)->
    sgte)->val val;
             ((*Final)->
    sgte)->sgte NULL;
             *Final = (*Final)->
    sgte;

             
    cont++;
      }


    cesrlg: 6 ciclos de reloj minimo, 11 ciclos de reloj maximo
    mio: 0 ciclos de reloj minimo, 1 ciclo de reloj maximo.
    Última edición por Tronador; 04-05-2009 a las 04:05 PM

Página 2 de 3 PrimerPrimer 123 ÚltimoÚltimo

Temas similares

  1. Varias cositas que no sobran sobre primos
    Por phicar en el foro Criptografía
    Respuestas: 5
    Último mensaje: 05-22-2009, 02:49 AM
  2. @rroba 6 Numeros¡
    Por blue_reckiem en el foro Biblioteca: Revistas Electrónicas
    Respuestas: 5
    Último mensaje: 01-14-2009, 08:54 AM

Visitantes encuentran esta página buscando por:

NUMEROS PRIMOS QBASIC

Lista De Numeros Primos Del 1 Al 500

numeros primos en qbasic

numeros primos en assembler

numeros primos quick basic

qbasic numeros primos

numeros primos assembler

numeros primos en asm

numero primo qbasic

assembler numero primo

numeros primos en visual basic 2008

imprimir numeros primos en qbasic

numero primo en qbasic

números primos en assembler *asm

un algoritmo con los numeros primos en qbasic

numeros primos hasta 20 000CALCULAR NUMERO PRIMO EN QBASICsaber si un numero par o impar qbasicdeterminar si son numeros primos en qbasiclista de numeros primos hasta el 20000saber si un numero es primo ensambladorcomo hallar los números primos del 1 al 3000primos en qbasicdeterminar numeros primos en qbasiccodigo numeros primos java

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •