Etiketler

2 Haziran 2014 Pazartesi

C# Asal Sayı Bulmak

Herkese merhaba, bu yazımda sizlere c# ile - aslında sırf cs demek doğru olmaz basit olduğu için tüm c dili ailesi için geçerli - asal sayı bulmaya çalışacağız.Satırları tek tek en açıklayıcı şekilde açıklamaya çalışacağım.Bu örneğimizde for döngüsünden faydalanacağımız için bilmiyorsanız tam olarak öğrenmek için geçen yazımdan faydalanabilirsiniz.
For döngüsüyle ilgili yazım: TIKLAYIN




Kodumuz kısaca yukarıda görüldüğü gibi.Burada programımız bize 2 den başlayarak 20 ye kadar olan asal sayıları ve aynı zamanda sayı asal değilse sayının en büyük çarpanını buluyor.

İlk for döngümüzde, tanımladığımız sayı değişkenini 2 den başlayarak 20 ye kadar tek tek artmasını istiyoruz.Bu sayede 2 den 20 ye kadar olan asal sayıları bulacağız.

Asalmi = true olan yerde ise sayıyı otomatik olarak asal olarak gösteriyoruz.Bunun nedenini diğer for ifadesinden sonra daha iyi anlayacaksınız.

İçindeki for ifadesinde yapmaya çalıştığımız şey ise sayının bir böleni olup olmadığını bulmak.

Bunu daha rahat anlayabilmeniz için şöyle düşünebilirsiniz; örneğin 10 sayısını düşünelim, ilk for döngüsündeki "sayı" değişkeni 10 'a gelmiş ve şimdi 10 un asal olup olmadığını inceliyoruz.

Bu sayının böleni olup olmadığını bulmak için 10 sayısından bir eksiğine kadar yani   (i < sayi - 1)  'e yani 10 için düşünürsek 9 a kadar çıkacak.Ve 9 a kadar çıkarken tek tek bakacak, 2 ye bölünüyor mu?, 3 e bölünüyor mu? ... 9 a bölünüyor mu? (Niye 2 den başladı bölmeye diye sorarsanız i=2 den başlattık for döngümüzde.)

Tabi for ifademiz sadece i sayısını arttırıyor. Asıl işte 10 sayısı 2 ye, 3 e, 4 e... 9 a bölünüyor mu diye soran kısım if ifademizin içindeki ((sayi % i) == 0)  kısmı.
% işareti c dilinde bölünme işleminden sonra kalan sayıyı buldurmaya yöneliktir.Ve tabiki kalan sıfıra eşitse kalansız bölünmüştür ve kalansız bölünmüşse asal değildir.O halde asalmi değişkenimizi false yaparız ve asal olmadığını anlarız.

Peki en büyük çarpanını buluyoruz demiştim o da "i" değerimize eşit oluyor.Peki o nasıl oluyor diye sorarsanız kısaca incelersek; yine 10 sayısı örneğin, tek tek bakıyoruz i=2 evet bölündü ancak i artmaya devam ediyor sonra i=5 e geldi ve evet işte o da bölünüyor.Başka bölünen yok ve burada i değişkeni son aldığı değişkeni tutuyor.Bu yüzden en büyük çarpanıda "i" ye eşit oluyor.

Yazımı bitirmeden önce aklınızda kalabilecek bir soru olabilir, o da for döngüsünün içindeki for döngüsü yeni bir sayıya geçtiğimizde sürekli tekrardan başladığıdır.Yani ikinci for döngümüz sürekli i=2 den kontrol etmeye başlıyor.