Kodlar
Public Class Form1
Dim sayi, sayi1, toplam, k As Long
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
sayi = TextBox1.Text
toplam = 0
For k = 2 To sayi / 2
If sayi Mod k = 0 Then toplam = toplam + k
Next
If toplam + 1 = sayi Then
MsgBox("Sayı MÜKEMMEL bir sayıdır.")
Else 'Sayı mükemmel değil ise bir sonrakini ara
sayi1 = sayi
Do
toplam = 0
sayi1 = sayi1 + 1
For k = 2 To sayi1 / 2
If sayi1 Mod k = 0 Then toplam = toplam + k
Next
Loop Until toplam + 1 = sayi1
MsgBox("MÜKEMMEL sayı değil.")
End If
End Sub
End Class
Örnek 10:
Collatz Problemi: Dolu tanesi sayıları olarak da bilinen problem,
girilecek bir pozitif tamsayı ile başlayan bir sayı dizisi oluşturmaya
dayanır.
Dizinin her bir elemanı, bir önceki sayı kullanılarak şu kural dâhilinde
hesaplanır: Eğer sayı çift ise bir sonraki sayı bu sayının yarısı, tek ise üç
katının bir fazlası olacaktır. Böylece ilk sayısı verilen bir sayı dizisi
oluşturulur.
Örneğin, ilk sayı 7 ise dizi şu şekilde oluşacaktır:
7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, 4, 2, 1,...
Ya da ilk sayı 21 ise,
21, 64, 32, 16, 8, 4, 2, 1, ...
Görüldüğü gibi dizi 1 sayısına ulaştığı anda sonsuz döngüye girmektedir.
Aslında başlangıç sayısı olarak ne girersek girelim dizi her zaman 1
sayısına
ulaşmaktadır, ama bu durum henüz matematiksel olarak kanıtlanamamıştır.
29