Вот пример решения на Python проблемы «Хакерранг между двумя наборами»:
Метод 1: грубая сила
def is_factor(num, arr):
for i in arr:
if num % i != 0:
return False
return True
def is_factor_of(num, arr):
for i in arr:
if i % num != 0:
return False
return True
def between_two_sets(a, b):
count = 0
for num in range(max(a), min(b) + 1):
if is_factor(num, a) and is_factor_of(num, b):
count += 1
return count
a = [2, 4]
b = [16, 32, 96]
result = between_two_sets(a, b)
print(result)
Метод 2. Использование математической библиотеки
import math
def between_two_sets(a, b):
lcm = a[0]
gcd = b[0]
for num in a[1:]:
lcm = lcm * num // math.gcd(lcm, num)
for num in b[1:]:
gcd = math.gcd(gcd, num)
count = sum([1 for x in range(lcm, gcd+1, lcm) if gcd % x == 0])
return count
a = [2, 4]
b = [16, 32, 96]
result = between_two_sets(a, b)
print(result)
Метод 3. Использование списков
def between_two_sets(a, b):
count = sum(all(num % i == 0 for i in a) and all(j % num == 0 for j in b) for num in range(max(a), min(b) + 1))
return count
a = [2, 4]
b = [16, 32, 96]
result = between_two_sets(a, b)
print(result)