- Stein(0,x) FPB nya adalah x, karena nilai x adalah pembagi terbesar untuk x dan juga untuk 0.
- Untuk Stein(x,0) = x . Stein(0,0) -> karena tidak terdeifinisi, maka nilai FPBnya adalah x .
- 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.
- Jika x genap dan y ganjil, maka Stein(x,y) = Stein(x : 2,y)
- Demikian pula jika x ganjil dan y genap, maka Stein(x,y) = Stein(x,y : 2).
- dan jika keduanya ganjil tetapi nilai x ≥ y maka Stein(x,y) = Stein( (x-y) : 2, y).
- 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