Problema de Memory Error Python

Iniciado por camaleonh, 24 Febrero 2012, 00:32 AM

0 Miembros y 1 Visitante están viendo este tema.

camaleonh

Este algoritmo lo que hace es calcular un numero primo con minimo 20 cifras, se que funciona bien con numeros pequeños pero cuando intento 20 cifras me salta memory error

Código (python) [Seleccionar]


#!/usr/bin/env python

from math import sqrt

# Busqueda de primos (true->primo || false->compuesto)
def primo (numero):
    lista_p = []
    max = int(sqrt(numero))
   
    # creo la lista de primos
    for i in range(2,max):
        if(primo_aux(i,lista_p)):
            lista_p.append(i)
       
    return primo_aux(numero, lista_p)
   
# Busqueda con division entre los primos en (2, sqrt(n)) (Auxiliar)
def primo_aux (numero, primos_m):
    for i in primos_m:
        if ((numero%i) == 0):
            return False # no es primo por division exacta entre un primo
    return True
       

def main():
   
    n = long(10000000000000000000) #Numero de 20 cifras
   
    while True:
        print "Entra"
        if(primo(n)):
            break;
        n += 1

    print "Primo encontrado: %n", n

if __name__ == "__main__":
    main()


Cualquier ayuda es apreciada.

camaleonh

Solucionado, no debo usar range con números tan grandes por que se llena toda la memoria, mejor un ciclo while uno por uno, también se puede optimizar más.