[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