Python - Crear función que me devuelva aquellos que son primos

 
Vista:

Crear función que me devuelva aquellos que son primos

Publicado por Microdat (13 intervenciones) el 26/03/2021 13:03:38
Hola buenas, estoy intentando crear una funcion que reciba una lista de numeros como parámetro y me devuelva aquellos que son primos en otra lista. He intentado con el siguiente código pero no me funciona y nose donde está el fallo.
Agradezco cualquier ayuda, un saludo.

Código:
1
2
3
4
5
6
7
8
9
10
11
12
13
numero = str(input("introduzca numero:" ))
for n in numero:
    def filtrarprimos(n):
        if n<2:
            return False
        else:
            for i in range(2,n):
                if n%i == 0:
                    return False
            return True
lista = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 53, 59]
lista2 = filter(filtrarprimos, lista)
print(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

Crear función que me devuelva aquellos que son primos

Publicado por Microdat (13 intervenciones) el 26/03/2021 15:36:13
Gracias! Pero mi duda realmente es que nose como hacer para que la funcion tome una lista y me devuelva otra modificada a partir de esa misma.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Crear función que me devuelva aquellos que son primos

Publicado por joel (901 intervenciones) el 26/03/2021 17:48:35
Puedes hacerlo utilizando filter... algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import math
 
def es_primo(numero):
    """
    Funcion que determina si un numero es primo
    Tiene que recibir el numero entero
    """
    # Para que un numero sea primo, unicamente tiene que dividirse dos veces:
    #   1 - divisible entre 1
    #   2 - divisible entre el mismo
    # En este bucle, empezamos por el dos hasta un numero anterior a el, por lo
    # que si en el bucle, alguna vez se divide el numero, quiere decir que no es
    # primo
    if (numero<=1):
        return False
 
    for i in range(2, math.ceil(math.sqrt(numero))+1):
        if(numero%i==0 and i!=numero):
            return False
    return True
 
lista = [2, 3, 4, 5, 6, 7, 8, 9, 10]
nuevaLista=list(filter(lambda x: es_primo(x), lista))
print(nuevaLista) # [2, 3, 5, 7]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jorge Alberto
Val: 137
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Crear función que me devuelva aquellos que son primos

Publicado por Jorge Alberto (48 intervenciones) el 26/03/2021 15:57:01
Esto debería funcionar:

1
2
3
4
5
6
7
8
9
10
11
12
def primo_o_no(n):
    for m in range(2,int(n/2)+1):
        if n%m==0:
            return False
    return True
 
def filtrarprimos(lista):
    primos = []
    for numero in lista:
        if primo_o_no(numero)==True:
            primos.append(numero)
    return primos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar