Run the script using Python
python mcd.py <first_number> <second_number>
Or just run the script and the numbers will be requested in interactive mode.
import sys | |
def mcd(first_number, second_number): | |
if second_number > first_number: | |
first_number, second_number = second_number, first_number | |
mcd_steps = [] | |
print('MCD') | |
while second_number > 0: | |
mcd_steps.append((first_number, second_number, first_number//second_number, first_number%second_number)) | |
print(f'{first_number} = {second_number} * {first_number//second_number} + {first_number%second_number}') | |
first_number, second_number = mcd_steps[-1][1], mcd_steps[-1][3] | |
print('MCD =', mcd_steps[-1][1]) | |
print('\n-------------\n') | |
print('Bezout') | |
print(mcd_steps[-1][1], '=') | |
start_row = mcd_steps[-2] | |
# MCD = A * B + C * D | |
a, b, c, d = 1, start_row[0], -start_row[2], start_row[3] | |
for row in reversed(mcd_steps[:-2]): | |
# X = B * Y + D | |
x,y = row[0], row[2] | |
a,b,c,d=c,x,a-c*y,b | |
print(f'= {a} * {b} {c:+} * {d}') | |
print('N. 1 = ', end='') | |
if len(sys.argv) > 1: | |
first_number = int(sys.argv[1]) | |
print(first_number) | |
else: | |
first_number = int(input()) | |
print('N. 2 = ', end='') | |
if len(sys.argv) > 2: | |
second_number = int(sys.argv[2]) | |
print(second_number) | |
else: | |
second_number = int(input()) | |
print('\n-------------\n') | |
mcd(first_number, second_number) |