Tantangan
Tulis program atau fungsi yang mengambil dua bilangan bulat input, i
dan j
, dan hasilkan pembagi umum terbesar mereka; dihitung dengan menggunakan algoritma Euclidean (lihat di bawah).
Memasukkan
Input dapat diambil sebagai representasi string dengan batasan ruang i
dan j
atau sebagai dua bilangan bulat terpisah. Anda dapat mengasumsikan bahwa bilangan bulat akan kurang dari atau sama dengan 10.000. Anda juga dapat mengasumsikan bahwa bilangan bulat input tidak akan menjadi prima satu sama lain.
Kerusakan Euclidean
Jumlah yang lebih besar antara i
dan j
dibagi dengan yang lebih kecil sebanyak mungkin. Kemudian, sisanya ditambahkan. Proses ini diulangi dengan sisa dan nomor sebelumnya, sampai sisa menjadi 0
.
Misalnya, jika inputnya adalah 1599 650
:
1599 = (650 * 2) + 299
650 = (299 * 2) + 52
299 = (52 * 5) + 39
52 = (39 * 1) + 13
39 = (13 * 3) + 0
Angka terakhir 13
,, adalah pembagi umum terbesar dari dua bilangan bulat input. Dapat divisualisasikan seperti ini:
Keluaran
Output Anda harus berupa rincian dalam formulir di atas, diikuti oleh baris baru dan GCD. Ini bisa menjadi output melalui media apa pun.
Contohnya
Input
18 27
50 20
447 501
9894 2628
Keluaran
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
Catatan: Output tidak harus diberi spasi seperti di atas. Spasi hanya untuk kejelasan. Diperlukan tanda kurung.
Bonus
Jika output Anda diberi spasi seperti di atas, Anda dapat menambahkan bonus -10% untuk skor Anda.