Python – Pares cuadrados perfectos interlistados

A veces, mientras trabajamos en el dominio de Matemáticas, podemos tener un problema en el que necesitamos verificar si el producto de elementos de diferentes listas puede conducir a un cuadrado perfecto o no. Esto puede tener aplicación en muchos dominios, incluidas las matemáticas y el desarrollo web. Analicemos ciertas formas en que se puede realizar esta tarea.

Método n.° 1: Uso del bucle
Esta tarea se puede realizar mediante el uso del bucle. Esta es una forma de fuerza bruta en la que podemos realizar esta tarea. En esto, multiplicamos cada elemento con otro y verificamos si es un cuadrado perfecto.

# Python3 code to demonstrate 
# Interlist Perfect Square Pairs
# using loop
  
# Initializing lists
test_list1 = [4, 5, 6, 7, 3, 4]
test_list2 = [6, 4, 2, 8, 9, 4]
  
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
  
# Flatten List to individual elements
# using chain() + isinstance()
res = []
idx = 0
while(idx < len(test_list1)):
    j = 0
    while(j < len(test_list2)):
        sub = test_list1[idx] * test_list2[j]
        n = sub**0.5
        temp = int(n)
        if n == temp:
            res.append((test_list1[idx], test_list2[j]))
        j = j + 1
    idx = idx + 1
              
# printing result 
print ("The perfect square pairs are : " + str(res))
Producción :

La lista original 1 es: [4, 5, 6, 7, 3, 4]
La lista original 2 es: [6, 4, 2, 8, 9, 4]
Los pares cuadrados perfectos son: [(4, 4) , (4, 9), (4, 4), (6, 6), (4, 4), (4, 9), (4, 4)]

Método #2: UsarCounter() + set() + loop + product()
Esta tarea también se puede realizar usando una combinación de estas funciones. En esto usamos el hecho de que el cuadrado perfecto con factores siempre en pares, es decir, cada elemento factor sería par.

# Python3 code to demonstrate 
# Interlist Perfect Square Pairs
# using Counter() + set() + loop + product()
from itertools import product
from collections import Counter
  
def prime_factors(n):
    i = 2
    factors = []
    while i * i <= n:
        if n % i:
            i += 1
        else:
            n //= i
            factors.append(i)
    if n > 1:
        factors.append(n)
    return Counter(factors)
  
# Initializing lists
test_list1 = [4, 5, 6, 7, 3, 4]
test_list2 = [6, 4, 2, 8, 9, 4]
  
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
  
# Flatten List to individual elements
# using Counter() + set() + loop + product()
prime_fac = {idx: prime_factors(idx) for idx in set(test_list1) | set(test_list2)}
res = set()
for a, b in product(test_list1, test_list2):
    combined_counts = prime_fac[a] + prime_fac[b]
    if all(v % 2 == 0 for v in combined_counts.values()):
        res.add(tuple(sorted([a, b])))
              
# printing result 
print ("The perfect square pairs are : " + str(res))
Producción :

La lista original 1 es: [4, 5, 6, 7, 3, 4]
La lista original 2 es: [6, 4, 2, 8, 9, 4]
Los pares cuadrados perfectos son: {(4, 4) , (4, 9), (6, 6)}

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *