[pyar] Numeros primos

Pablo M. Mana pablo.m.mana en gmail.com
Lun Nov 28 14:40:03 ART 2011


El día 28 de noviembre de 2011 13:52, Ricardo Armas <rarmas en gmail.com> escribió:
> On Sun, Nov 27, 2011 at 22:30, Pablo M. Mana <pablo.m.mana en gmail.com> wrote:
>> Muchas gracias por sus respuestas, aprendi unas cuantas cosas
>> leyendolos, la funcion quedo:
>>
>> def primos ( fin = 100 ):
>>    """ Halla una lista de numeros primos por encima de 7 """
>>    im = [ n for n in range (3, fin, 2) ]
>>    l1 = [ o for o in im if (o % 5 != 0 ) ]
>>    l2 = [ m for m in l1 if ( ( pow( m, 0.5) ) !=  int( pow( m, 0.5)))]
>>    p1 = [ n for n in l2 if all(n%l != 0 for l in range(2, int( pow(n, 0.5)))) ]
>>    print p1
> No funca, tira el 143 que no es primo por ejemplo.
>
> --
> Ricardo A. Armas

Tenes razon, se me habia escapado.  13*11 , si hubiera hecho un
algoritmo (es un decir ) como la criba quizas no hubiese pasado o
quizas se me hubieran cruzado los cables y estarian todos lo multiplos
de primos ....
¿Ahora la pregunta es que pasaba?, segun el DreamPie:

>>> a = 143
... b = int( pow(a, 0.5))
... print b
11
>>>

Asi que en principio tendria que dividir por 11

Pero al hacer

>>> c= range(2, int( pow( a, 0.5)))
>>> print c
[2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>

El problema estaba en como inteprente que funcionaba el range

>>> a= 13*11
... c= range(2, 1 + int( pow( a, 0.5)))
... print c
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
>>>

En teoria sumandole uno al int tendria que andar pero no. No veo que
otra cosa estoy haciendo mal


Saludos.
Pablo M. Mana



More information about the pyar mailing list