Pembagi persekutuan terbesar (PBT) dari a dan b adalah bilangan terbesar yang membagi keduanya tanpa sisa.
Salah satu cara untuk mencari PBK dari dua angka adalah algoritma Euclid, yang didasarkan pada pengamatan bahwa jika r
adalah sisa jika a
dibagi b
, maka gcd(a, b) = gcd(b, r)
. Sebagai kasus dasar, kita bisa menggunakan gcd(a, 0) = a
.
Tulis fungsi yang disebut gcd yang mengambil parameter a
dan b
dan mengembalikan pembagi persekutuan terbesarnya.
Jawaban:
Ada di perpustakaan standar .
Kode sumber dari
inspect
modul di Python 2.7:Pada Python 3.5,
gcd
ada dimath
modul ; yang difractions
sudah usang. Selain itu,inspect.getsource
tidak lagi mengembalikan kode sumber penjelasan untuk metode mana pun.sumber
fractions.gcd(1, -1)
adalah-1
tetapi1 > -1
,1
membagi keduanya1
dan-1
tanpa sisa dan lebih besar dari-1
, lihat bugs.python.org/issue22477gcd(1, -1) == -1
tampaknya benar-benar sah bagi saya.fractions.gcd()
apa adanya (ini berfungsi pada elemen cincin Euclidean).math.gcd(1, -1)
kembali1
.Algoritme dengan mn bisa berjalan sangat lama.
Yang ini bekerja jauh lebih baik:
sumber
x
sebelum ditugaskan. Anda ditetapkany
kex
pertama , jadi sekarangy
akan disetel ke0
(sepertiy % y
biasa 0).Versi kode ini menggunakan Algoritma Euclid untuk menemukan GCD.
sumber
def gcd(a, b): if b == 0: return a return gcd(b, a % b)
sumber
sumber
Solusi yang sangat ringkas menggunakan rekursi:
sumber
menggunakan rekursi ,
menggunakan sementara ,
menggunakan lambda,
sumber
Pendekatan berbeda berdasarkan algoritma euclid.
sumber
sumber
Saya pikir cara lain adalah dengan menggunakan rekursi. Ini kode saya:
sumber
gcd(10,5)
...dengan python dengan rekursi:
sumber
sumber
Untuk
a>b
:Untuk salah satu
a>b
ataua<b
:sumber
b, a = a, b
. coba baca lebih lanjut tentang bahasanyaSaya harus melakukan sesuatu seperti ini untuk tugas pekerjaan rumah menggunakan while loop. Bukan cara yang paling efisien, tetapi jika Anda tidak ingin menggunakan suatu fungsi, ini berfungsi:
sumber
sumber
Kode ini menghitung gcd lebih dari dua angka tergantung pada pilihan yang diberikan oleh pengguna, di sini pengguna memberikan nomor tersebut
sumber
Pertukaran nilai tidak bekerja dengan baik untuk saya. Jadi saya hanya mengatur situasi seperti cermin untuk angka yang dimasukkan baik dalam a <b OR a> b:
sumber
pembimbing_komunitas_besar (A)
sumber
sumber
break
pernyataan apa yang ingin dicapai.Berikut solusi yang menerapkan konsep
Iteration
:sumber