Análisis#
El reto consiste en interceptar una lista de números entre los que solo dos son primos auténticos y se utilizan como clave. El objetivo es identificar estos dos números primos dentro de la lista y encontrar su producto, que es la clave para resolver el caso. Esta tarea requiere filtrar la lista para detectar números primos y luego multiplicar los primeros dos encontrados.
El problema presenta que la mayoría de los números son irrelevantes (“basura”) y solo dos son valiosos porque son primos. La función clave es la prueba de primalidad, que debe ser correcta para no contar números no primos.
Código#
El código propuesto plantea:
- Leer una lista de números desde la entrada.
- Implementar una función
primo(n)que determine de forma eficiente si un número es primo, evitando considerar 0 y 1 como primos. - Recorrer la lista, verificar cuáles números son primos y guardar los dos primeros encontrados.
- Multiplicar esos dos números para obtener la clave.
- Imprimir el resultado.
El código es sencillo y directo, implementando la verificación de números primos con una condición para descartar 0 y 1 y un ciclo para detectar divisores.
# take in the number
n = input()
n = n.split()
# calculate answer
def primo(n):
if(n == 0 or n ==1):
return False
for i in range(2,n):
if(n%i == 0):
return False
return True
pr = []
for i in range(len(n)):
isthis = primo(int(n[i]))
if(isthis == True):
pr.append(n[i])
if(len(pr) == 2):
break
n = int(pr[0]) * int(pr[1])
# print answer
print(n)
