Skip to content

Commit 93bfc69

Browse files
authored
Merge pull request #6814 from Maanghel/main
#21 - Python
2 parents 4bff3d6 + 623dbf0 commit 93bfc69

File tree

1 file changed

+64
-0
lines changed
  • Retos/Reto #21 - NÚMEROS PRIMOS GEMELOS [Media]/python

1 file changed

+64
-0
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
"""
2+
Crea un programa que encuentre y muestre todos los pares de números primos
3+
gemelos en un rango concreto.
4+
El programa recibirá el rango máximo como número entero positivo.
5+
6+
- Un par de números primos se considera gemelo si la diferencia entre
7+
ellos es exactamente 2. Por ejemplo (3, 5), (11, 13)
8+
9+
- Ejemplo: Rango 14
10+
(3, 5), (5, 7), (11, 13)
11+
"""
12+
13+
import math
14+
15+
def find_pair_prime(num: int) -> list[tuple[int, int]]:
16+
"""
17+
Encuentra todos los pares de números primos gemelos hasta un rango dado.
18+
19+
Un número primo gemelo es aquel que forma pareja con otro primo cuya
20+
diferencia es exactamente 2.
21+
22+
Args:
23+
num (int): Número entero positivo que define el límite superior del rango.
24+
25+
Returns:
26+
List[Tuple[int, int]]: Lista de tuplas con los pares de primos gemelos encontrados.
27+
28+
Raises:
29+
TypeError: Si el valor proporcionado no es un entero.
30+
ValueError: Si el número es menor que 2.
31+
32+
Examples:
33+
>>> find_pair_prime(14)
34+
[(3, 5), (5, 7), (11, 13)]
35+
"""
36+
37+
if not isinstance(num, int):
38+
raise TypeError("El rango debe ser un número entero positivo.")
39+
if num < 2:
40+
raise ValueError("El rango debe ser mayor o igual a 2.")
41+
42+
def is_prime(number: int) -> bool:
43+
"""Verifica si un número es primo."""
44+
if number < 2:
45+
return False
46+
elif number == 2:
47+
return True
48+
elif number % 2 == 0:
49+
return False
50+
return all(number % i != 0 for i in range(3, math.isqrt(number) + 1, 2))
51+
52+
prime_numbers = [i for i in range(2, num + 1) if is_prime(i)]
53+
54+
pairs_prime = []
55+
for i, prime in enumerate(prime_numbers[:-1]):
56+
if prime_numbers[i + 1] - prime == 2:
57+
pairs_prime.append((prime, prime_numbers[i + 1]))
58+
59+
return pairs_prime
60+
61+
62+
if __name__ == "__main__":
63+
for pair in find_pair_prime(14):
64+
print(pair)

0 commit comments

Comments
 (0)