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))
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))
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