Опишу все сначала. Под комментарием ‘#Extra’ написан код, выполняющий “каноническое разложение составного числа” на множители. Списки ‘B’ и ‘C’ содержат соответственно множители. Под комментарием ‘#Main’ находится часть о которой и идет речь. В ней получается НОД (пересечение 2-х списков.). Оно происходит так: перебираются элементы списка ‘B’, и если элемент есть в списке ‘C’, элементы удаляются из списков и удаленный элемент добавляется в список ‘F’. Вроде все должно работать нормально, но это происходит только в некоторых случаях. Есть случаи, когда работа главной части “недоделана”. Прошу помощи: В чем ошибка и как можно ее исправить?
n = int(input())
n1 = int(input())
#Extra
def gg(n):
(q,q2) = ('True','True')
A = []
f = int(n)
while q2 == 'True':
while q == 'True':
for i in range(2, f + 1):
if i == f:
A.append('')
A.append(i)
q = 'False'
break
elif f%i ==0:
f = int(f/i)
A.append(i)
q = 'False'
break
if '' in A:
q2 = 'False'
elif '' not in A:
q = 'True'
global A
return A
gg(n)
B = A
gg(n1)
C = A
F = []
del B[-2]
del C[-2]
print(B)
print(C)
#Main
for i in C:
if i in B:
B.remove(i)
C.remove(i)
F.append(i)
print(B)
print(C)
print(F)