My first Magazine <zxcvbnmöç. | Page 35

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