Anuncio

Colapsar
No hay ningún anuncio todavía.

Software para crear números primos

Colapsar
X
 
  • Filtro
  • Hora
  • Mostrar
Borrar todo
nuevos mensajes

  • #16
    Re: Software para crear números primos

    Escrito por u_maligno Ver mensaje
    Hola Richard, podrías comprobar una cosa? La conjetura de Legendre afirma que existe al menos un primo entre n^2 y (n+1)^2 (entre cuadrados consecutivos vaya),
    tambien probe
    Escrito por Richard R Richard Ver mensaje
    Bueno , también hay otras conjeturas con que siempre hay un primo entre n y 2n inclusive, y entre 2n y 3n...algo mas difícil que no hay gaps de tamaño n hasta mas allá de n^2...

    Se les ocurre alguna mas, para validar/ refutar empíricamente?
    hasta el 1e8 encontré.... nada como era de esperar Saludos

    Mi pc tardó 36 hs hasta llegar a 100000000 números naturales, y hallar 5765021 primos , pero cualquier estudio decente arranca de 1 e16 para arriba, lo que me llevara estimo unos 300000 años o mas generar esos primos, mejor foja cero y buscar otro algoritmo.

    Comentario


    • #17
      Re: Software para crear números primos

      Gracias Richard, yo por eso te decía de comprobar alguna diferente (más acotada), porque para las más conocidas ya se ha comprobado para números bastante grandes. Y bueno, algunas incluso son teoremas así que no hace falta (aunque yo personalmente no soy capaz de seguir la demostración, mates demasiado chungas para mi xd)

      Gracias de todos modos por la molestia, igual con el algoritmo de Maq77 mejoraba la cosa..

      Saludos.

      Comentario


      • #18
        Re: Software para crear números primos

        Escrito por Richard R Richard Ver mensaje
        Mi pc tardó 36 hs hasta llegar a 100000000 números naturales, y hallar 5765021 primos , pero cualquier estudio decente arranca de 1 e16 para arriba, lo que me llevara estimo unos 300000 años o mas generar esos primos, mejor foja cero y buscar otro algoritmo.
        Richard esto es demasiado tiempo, pero sospecho que hay algo mal en tu algoritmo, programa o PC, porque yo obtuve ese mismo resultado en menos de media hora.

        Deberías revisar cual parte de tu programa es la que se está llevando todo el tiempo del cálculo.

        Saludos
        Última edición por Maq77; 04/11/2018, 22:17:57. Motivo: Corregir error ortográfico

        Comentario


        • #19
          Re: Software para crear números primos

          Escrito por Maq77 Ver mensaje
          Deberías revisar cual parte de tu programa es la que se está llevando todo el tiempo del cálculo.
          Sospecho que es por tratar números como strings para que no haya problemas con las variables, por pretender que con números grandes funcione, es muy lento al principio.

          Estoy cambiando el método, pero no quiero usar variables variant, desconozco si en efecto puede reconocer y como se hace a tener todo el numero no solo las cifras significativas... por eso manejo strings

          No se si se entiende lo que busco, un programa que permita hallar números primos de largas cadenas de cifras, el tema pasa entonces por donde almacenas tanta cantidad de números tan grandes, la memoria en GBytes de un PC se vuelve pequeña 55MB ocupan mas de 5M de números primos llegar a 1e 16 requiere varios teras... no tiene mucho sentido ni utilidad almacenarlos, mas que para calcular los gaps

          En tu código de ejemplo la función Int fallara luego de 32767 +1 y la long fallara cuando cargues PN [FONT=Consolas]2147483647 +1 o mejor +2 [/FONT]lo que pretendo es que ese tipo de límites no se de en mi software... pero hacerlo a mi modo ralentiza.
          Última edición por Richard R Richard; 05/11/2018, 01:41:19.

          Comentario


          • #20
            Re: Software para crear números primos

            En una computadora de 64 bits con Visual Basic 2010 en adelante puedes utilizar las variables del tipo ULong

            "ULong contiene enteros de 64 bits sin signo (8 bytes) que van de un valor de 0 a 18.446.744.073.709.551.615 (más de 1,84 veces 10 ^ 19)."

            Creo que dividir la tarea en dos formas de trabajo te sería de utilidad, hasta este valor al menos trabajar el programa como números, y cambiar a una función en string solo cuando los valores superen esta cifra.

            También se podría revisar la función que utilizas para trabajar los string, tal vez allí también se pueda encontrar alguna optimización posible.

            Comentario


            • #21
              Re: Software para crear números primos

              Escrito por Maq77 Ver mensaje
              Por aca otra función que me da los números primos por debajo del 1.000.000 en menos de 10 segundos.

              Código:
              '****************************************************************************************
              '* PROYECTO      : NUMEROS PRIMOS
              '* CONTENIDO     : FUNCIONES GLOBALES
              '* VERSION       : 1.1
              '* AUTORES       : MIGUEL QUINTEIRO PIÑERO
              '* INICIO        : 26 DE JULIO DE 2017
              '* ACTUALIZACION : 26 DE JULIO DE 2017
              '****************************************************************************************
              
              Module Funciones
                  ' Función para determinar si un número es o no primo
                  Public Function Primo(ByVal pN As Long) As Boolean
                      Dim i As Long
                      Primo = True
                      If (pN = 1) Or ((pN / 2) = Int(pN / 2)) Then
                          Primo = False
                      Else
                          For i = 3 To Math.Sqrt(pN) Step 2
                              If (pN / i) = Int(pN / i) Then
                                  Primo = False
                                  i = pN
                              End If
                          Next
                      End If
                  End Function
              End Module
              Acá tengo un error, estoy dejando por fuera al número 2, no lo está contando como un primo, el código corregido sería:

              Código:
              Module Funciones
                  ' Función para determinar si un número es o no primo
                  Public Function Primo(ByVal pN As Long) As Boolean
                      Dim i As ULong
                      Primo = True
                      ' Modificacion
                      ' **********************************************************
                      If ((pN = 1) Or ((pN / 2) = Int(pN / 2))) And (pN <> 2) Then
                          ' ******************************************************
                          Primo = False
                      Else
                          For i = 3 To Math.Sqrt(pN) Step 2
                              If (pN / i) = Int(pN / i) Then
                                  Primo = False
                                  i = pN
                              End If
                          Next
                      End If
                  End Function
              End Module
              Disculpen el error, pero me estaba dando un primo de menos en todos los conteos.

              Saludos.

              Comentario

              Contenido relacionado

              Colapsar

              Trabajando...
              X