Python - Ayuda con programa facil

 
Vista:

Ayuda con programa facil

Publicado por Alex Hernandez (1 intervención) el 16/10/2017 15:43:47
ademas de todo lo que tengo me gustaría que me ayudaseis a que se eliminaran los multiplos de la lista1,
por ejemplo, si n=11 y executais el programa os devolvera una lista1 [3,5,7,9,11] y lista2 [2,3], como pueso eliminar el 9? (porque es multiplo de otro numero de la misma lista, 3) pero de forma generalizada, no solo para este caso en concreto? gracias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import math
def funcion(n):
    lista2 = []
    lista1 = list(range (2,n+1))
    lista2.append(lista1[0])
 
    for i in lista1:
        if i % 2 == 0:
            lista1.remove(i)
 
    for i in lista1:
        if i<math.sqrt(n):
            lista2.append(i)
 
 
    print (lista1,lista2)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de abzerox
Val: 425
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda con programa facil

Publicado por abzerox (109 intervenciones) el 17/10/2017 04:40:02
Hola modifique un poco tu código y agregue lo que buscabas. Fijate que en caso de que el número no sea par recorro la lista hasta la posicion+1 de la actual, a su vez cree una lista3 la cual es una copia de lista1 ya que si no estaremos recorriendo una lista que a su vez es modificada.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import math
 
def funcion(n):
    lista2 = []
    lista1 = list(range (2,n+1))
    lista2.append(lista1[0])
    lista3 = lista1[:]
 
    for i, v in enumerate(lista3):
        if v % 2 == 0:
            lista1.remove(v)
        else:
            for x, z in enumerate(lista1[:i+1]):
                if v % z == 0 and v != z:
                    lista1.remove(v)
 
    for i in lista1:
        if i<math.sqrt(n):
            lista2.append(i)
 
    print (lista1,lista2)

Lo pruebas así:
1
funcion(11)

Devuelve:
1
[3, 5, 7, 11] [2, 3]

Nos comentas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar