мне нужно, чтобы получить наибольший общий делитель 2 числа, используя их факторизации факторизации будут выставлены в счетчикахНОД из 2 факторизации списков с помощью счетчиков питона
c=Counter(factorslist(a))
d=Counter(factorslist(b))
Поэтому я хочу, чтобы добавить списки вместе, как
g=c and d
, а затем мой умножая, что находится внутри счетчика друг другом, я должен быть в состоянии получить НОД, так что если г является (2,2,3,8) я хочу, чтобы вычислить 2*2*3*8
.
У меня много проблем, есть ли функция счетчика, которая делает это? или мне нужен цикл для систематического разбора каждого числа вместе? мне нужно преобразовать его в настройки или что-то в первую очередь?
UPDATE: хорошо так, что ив сделал добавляют их вместе с помощью г = с & д ковшики тонкой теперь им пытаются получить мой алгоритм работает золь = 1 для г в диапазоне (MAXg + 1): если g [i]! = 0: k = g [i] sol = sol * (i k) Обратный золь поэтому я проверяю, сколько из каждого числа указано в списке общих факторов g и умножив число на их число, а затем умножение золя на то, что, например, пять двух, это sol = sol (5 * 2). это, похоже, работает с числами с низким gcds около 30 и меньше, я думаю? и он работает для совместного использования, но если я запустил это, скажем, 1000 500, я получу 60 назад ... даже 1000 и 990 дают мне 10 назад.
https://docs.python.org/dev/library/collections.html имеет доступные методы для Counter, а также другие классы с аналогичным возрастом и целью. – Prune
Я все еще борюсь, поэтому мне нужно добавить «g = min (c и d)»? то как я умножаю вещи? это просто заканчивается тем, что дает мне самый низкий общий делитель так, как «2», и это все. – mcmoistener
Запустите запущенный продукт, такой как gcd = 1 Вам нужно выполнить итерацию по элементам одного счетчика (скажем, 'c'). Для каждого элемента см., Существует ли ключ в 'd'. Если нет, перейдите к следующему элементу. Если это так, возьмите min из двух значений. Теперь, время цикла «мин». Каждый раз умножайте gcd на ключ элемента. Например, если вы нашли элементы 3: 4 в c и 3: 2 в d, вы будете перебирать 2 раза, умножая на 3. – Prune