Для этого вопроса использование уникальности произведения простых чисел может быть хорошим способом решения проблемы. Чтобы использовать простые числа, нам нужно:
массив, используемый для хранения простых чисел
генератор массива, который может выдавать информацию об индексе различных видов элементов (поскольку массив в этом случае является двоичным, нам нужно знать только индекс одного типа элемента в массиве. )
Чтобы исправить проблему переполнения, вызванную произведением простых чисел, нам нужно вычислить логарифм произведения:
Код переписывается следующим образом:
PRIME_NUMBER=np.array([2,3,5,7,11,13,17,23,29,31....], dtype='float')
flag = 0
loop_size = 100000
arr_size = 8
config = np.zeros(loop_size)
large_matrix=np.zeros((arr_size,loop_size))
while flag < loop_size:
arr, idx = arr_generator(arr_size)
prod = np.round(np.log10(np.prod(PRIME_NUMBER[idx])), 3)
if prod in config:
continue
else:
large_matrix[:,flag] = arr
flag += 1