Asal Sayı Bulma
Uzun bir süreden sonra ilk defa yazıyorum, hâlâ bilgisayarım bozuk. En kısa zamanda bir işlemci (AMD Athlon 939) bulmam gerekiyor. Neyse biz konumuza dönelim.
“Klavyeden girilen değere kadar asal sayı bulma” sorusu programlamaya başlayanlar için verilmiş ödevlerden biridir. Nasıl yapacağız sorusunu açıklık getirelim, tabi ki C# Windows Application’da.İlk olarak form üzerinde bir adet textbox oluşturup adını okunan yapın. Daha sonra bir listbox oluşturup adını asalSayılar olarak değiştirin. İsimleri değiştirmek için properties penceresindeki textBox1 ve listBox1 kısımlarını silip bu değerleri girin. Küçük bir program içinde bu isimleri yazmak o kadar da önemli değil ancak el alışkanlığı olması açısından girin, daha sonra programa baktığınızda çok daha rahat anlarsınız.
Şimdi bir buton oluşturun ve adını hesapla olarak değiştirin. Geçelim şimdi kod kısmına. Hesapla butonun içine aşağıdaki kodları yazalım. Ben değişkenleri kafama göre isimlendirdim bool ve int ile tanımladığım değişkenleri kafanıza göre değiştirin.
int sayi, sayac;
bool bayrak;
for (sayi = 2; sayi <= Convert.ToInt32(okunan.Text); sayi++)
{
if (sayi == 2) asalSayılar.Items.Add(sayi);
else
{if (sayi % 2 == 0) ;
else
{bayrak = false;
for (sayac = 3; sayac <= Convert.ToInt32(Math.Sqrt(sayi)); sayac += 2)
{
if (sayi % sayac == 0) bayrak = true;
}
if (bayrak == false) asalSayılar.Items.Add(sayi);}
}
}
Neler yaptık bir inceleyelim. Birinci satırda iki tane tam sayı değişkeni yazdık ve bölme işleminin kalanlı olup olmadığını hafızada tutabilmek için bir adet mantık operatörü(bool bayrak) tanımladık. Daha sonra istenen değere kadar tarayabileceğimiz bir sayaç oluşturduk. Sayacı 2′den başlattık çünkü 2′den küçük bir asal sayı yok. Daha sonra, 2 çift olup da asal olan istisna bir sayı olduğu için eğer sayı=2 ise listBox’ımıza hemen eklemesini söyledik. 2 dışındaki işlemler için küçük bir for döngüsü daha açmamız gerekiyor. Burada şunu bilmek gerekiyor, bir sayı kendi kareköküne kadar olan sayılardan hiçbirisine bölünmüyorsa asaldır. Aklına her sayının karekökü tamsayı değildir gibi bir şey gelebilir sorun değil Convert.ToInt32 yazarak sayımızı tam sayı olarak çeviriyoruz yani virgülden sonraki kısımları atıyoruz. For döngüsünü 2′şer artırmamızın sebebi ise aradaki çift sayıları atmak için. Çift olup da asal olan sadece 2 var ve biz onu en başta yazdırmıştık.
Son olarak ikinci for döngümüz içinde bir mod işlemi yazdık. Eğer bölme işlemindan kalan 0 ise bayrak değişkenini true yapıyoruz böylece bu sayının bir bölene sahip olduğunu belirlemiş oluyoruz. For döngüsünden çıktığımızda bayrak=true ise demekki asal değil, false ise o sayı asaldır demektir.
Bunun yanı sıra bu kodlara neler eklenebilir?
Örneğin ikinci kez hesaplattığımızda listbox’da (asallar olarak adlandırmıştık) önceki hesaplattığımız sayılar da olacak bunun için her yeni hesaplama için buton içine bir clear() komutu ekleyebiliriz.
TextBox’a (okunan olarak adlandırdık) sayı girilmeden hesapla butonunu pasif yapabiliriz. Ancak textBox’a sayı girildiğinde aktif olabilir. Bunun içinde form loader kısmına bir button1.enabled=false yazmalıyız daha sonra okunan adlı textBox’ımızın için button1.enabled=true eklemeliyiz tabiki bu şekilde sadece textBox’a herhangi bir değer girildiğini kontrol etmiş olacağız belki harf de yazabilir (bu kısımdan ileride bahsedeceğim).
Şu an bulunduğum bilgisayarda Visual Studio yok. Sanırım bu kodlar doğruydu
Yani ben yaptığımda çalışmıştı
Elimde çok fazla örnek çalışma var inşallah en kısa zamanda yayınlayacağım, şu işlemciyi bir bulayım da…



Yazdığın kodun bir çok yerinde hatalar var. Bence bu kadar kendine güvenmeyip, vs yi yükleyip deneseydin en azından herkese faydan olurdu!
evet asal sayıları swsevmenm hayatımı mahmettı
asal sayılar beni de acayip maffettı oyüzden matamatiği sevmiyoru hatta nefret ediyorum
Yorumunu okur okumaz düzelttim…
Hatta VS’de de denedim
Yakında tekrardan yazmaya başlayacağım… Şu finaller bi bitsin..
bence matematik çok güzel tabi çaılışana kolay çalışmayana zor dur
asal sayılar çok basit eğer bir sayı hem kendisiyle hemde 1 ile bölünebiliyorsa asal sayıdır mesela 6 asal sayı değil çünkü 6 hem üçle bölnür 2 bölenür hem 1 ile bölünür hem de 6 le bölünürbu kadar bas
matematik programlamanın temelidir.
ben ktü isbb okuyorum 3. sınıftayım en ağır matematik derslerini gördük yeni yeni programlamaya geçtik gibi.
programlama bilen yığınla insan var ama biyere kadar, işin içine mat girince… lise de mat 2 en son gösteriyolar biz mat 6 ya kadar gördük