FPB Algoritma Stein dalam VB

February 13, 2009
Sekarang saya akan memulainya dengan cara kerja algoritma stein
  1. Stein(0,x) FPB nya adalah x, karena nilai x adalah pembagi terbesar untuk x dan juga untuk 0.
  2. Untuk Stein(x,0) = x . Stein(0,0) -> karena tidak terdeifinisi, maka nilai FPBnya adalah x .
  3. Jika x dan y adalah bilangan genap maka Stein(x,y) = 2 x Stein(x : 2,y : 2), karena angka 2 adalah angka yang dapat membagi habis kedua bilangan genap.
  4. Jika x genap dan y ganjil, maka Stein(x,y) = Stein(x : 2,y)
  5. Demikian pula jika x ganjil dan y genap, maka Stein(x,y) = Stein(x,y : 2).
  6. dan jika keduanya ganjil tetapi nilai x ≥ y maka Stein(x,y) = Stein( (x-y) :  2, y).
  7. dan jika keduanya ganjil tetapi nilai x < y, maka Stein(x,y) = Stein( (y-x) : 2,x)

dan jika ingin melakukan pencaraian FPB lebih dari dua bilangan, kita masih dapat memakai rumus :

Stein(x,y,z) = Stein( Stein(x,y),z)

dan coding dalam Visual Basicnya adalah :

Private Function Stein(nilai As String) As Integer
Dim larik() As String
larik = Split(nilai, “,”)
If larik(0) = 0 Then
Stein = larik(1)
Else
If UBound(larik) > 1 Then
For i = 2 To UBound(larik)
Stein = Stein(Stein & “,” & larik(i))
Next
End If
If larik(0) Mod 2 = 0 Then
If larik(1) Mod 2 = 0 Then
Stein = 2 * Stein(larik(0) / 2 & “,” & larik(1) / 2)
Else
Stein = Stein(larik(0) / 2 & “,” & larik(1))
End If
Else
If larik(1) Mod 2 = 0 Then
Stein = Stein(larik(0) & “,” & larik(1) / 2)
Else
If Val(larik(0)) >= Val(larik(1)) Then
Stein = Stein((larik(0) – larik(1)) / 2 & “,” & larik(1))
Else
Stein = Stein((larik(1) – larik(0)) / 2 & “,” & larik(0))
End If
End If
End If
End If
End Function

dalam coding yang saya berikan, terdapat sebuah masalah jika terjadi inputan seperti langkah ke-2 dalam algoritma Stein yang telah saya jelaskan diatas, misalnya Stein(“11,0”), sehingga ini adalah tugas anda untuk memperbaikinya saya sarankan untuk mengubah koding

If larik(0) = 0

degan menambahkan if lagi menjadi

If larik(0) = 0 Then

Stein = larik(1)

Elseif larik(1)=0 Then

Stein = larik(0)

Else

…..

…..

End if


Mencari FPB menggunakan VB

February 13, 2009

sering kali semua topik yang membahas tentang FPB dan KPK di internet hanya dapat digunakan untuk 2 bilangan, padahal dengan logika yang sama yaitu menggunakan algoritma Euclidean kita bisa menghitung FPB yang lebih dari 2 bilangan. Saya akan mencoba memberikan logika untuk mencari FPB (3 bilangan), yang nantinya akan sama dengan logika untuk FPB 4 bilangan dan seterusnya. Pertama mari kita ambil contoh dengan memisalkan ketiga bilangan tersebut dengan x,y,z. Kemudian kita cari nilai FPB dari x,y dan hasilnya kita cari FPB nya lagi dengan z.

FPB (x,y,z) = FPB(FPB(x,y),z)

kurang lebih seperi diatas rumusnya, kemudian mari kita lihat codingnya dalam VB (Visual Basic), kurang lebih codingnya seperti berikut ini :

Private Function Euclid(nilai As String) As Integer
Dim larik() As String
larik = Split(nilai, “,”)
Do While Val(larik(0)) Mod Val(larik(1)) <> 0
a = larik(1)
b = larik(0) Mod larik(1)
larik(0) = a
larik(1) = b
Loop

Euclid = larik(1)
If UBound(larik) > 1 Then
For i = 2 To UBound(larik)
Euclid = Euclid(Euclid & “,” & larik(i))
Next
End If
End Function

cara penggunaanya cukup dengan memasukkan parameter nilai dengan tipe string dan dipenggal koma, jadi misalnya kita ingin mencari FPB 12,44,28

kita panggil dengan Euclid(“12,44,28”)

untuk selanjutnya tunggu artikel dari saya tentang Algoritma Stein untuk mencari FPB.