挑战
编写一个程序或函数,它接受两个输入整数i
和j
,并输出它们的最大公约数;通过使用欧几里得算法计算得出(见下文)。
输入项
输入可以作为和的空格分隔的字符串表示形式i
,j
或作为两个单独的整数。您可以假设整数将小于或等于10,000。您还可以假定输入整数不会互为素数。
欧几里得分解
之间的较大数量i
和j
由较小的分割多次可能的。然后,添加其余部分。对剩余数和前一个数字重复此过程,直到剩余数变为0
。
例如,如果输入为1599 650
:
1599 = (650 * 2) + 299
650 = (299 * 2) + 52
299 = (52 * 5) + 39
52 = (39 * 1) + 13
39 = (13 * 3) + 0
最终数字13
是两个输入整数的最大公约数。它可以像这样可视化:
输出量
您的输出必须是上面表格中的细分,然后是换行符和GCD。可以通过任何介质输出。
例子
输入项
18 27
50 20
447 501
9894 2628
产出
27 = (18 * 1) + 9
18 = (9 * 2) + 0
9
50 = (20 * 2) + 10
20 = (10 * 2) + 0
10
501 = (447 * 1) + 54
447 = (54 * 8) + 15
54 = (15 * 3) + 9
15 = (9 * 1) + 6
9 = (6 * 1) + 3
6 = (3 * 2) + 0
3
9894 = (2628 * 3) + 2010
2628 = (2010 * 1) + 618
2010 = (618 * 3) + 156
618 = (156 * 3) + 150
156 = (150 * 1) + 6
150 = (6 * 25) + 0
6
注意:输出不必像上面那样隔开。间隔仅是为了清楚。需要括号。
奖金
如果您的输出按上述方式间隔放置,则可以为分数增加-10%。