Найти - Пользователи
Полная версия: НОД 2-х чисел.
Начало » Python для новичков » НОД 2-х чисел.
1
Edward
Опишу все сначала. Под комментарием ‘#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)
old_monty
НОД - это Наибольший Общий Делитель, я правильно понял? Если да, то НОД можно найти намного проще.
 def nod(num1, num2):
    #  Определим наименьшее из двух чисел num1 и num2
    min = num1 if num1 < num2 else num2
    #  Единица всегда является общим делителем для всех целых чисел
    largestFactor = 1
    for i in range(1, min + 1):
        if num1 % i == 0 and num2 % i == 0:
        largestFactor = i   # Найден НОД
    return largestFactor
Edward
Действительно, даже как-то не ловко. Но все же мне интересно, почему моя программа выводит вот такой результат:
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB