FPB Algoritma Stein dalam VB

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

Leave a comment