Bu yazımda C# ile asal sayı bulmanın kısaca algoritmasını ve mantığını konsol uygulamasında 2 farklı yöntemle anlatmaya çalışacağım.
Asal sayıyı tekrar hatırlarsak sadece 1’e ve kendisine bölünen sayılara asal sayı denir.
İlk yöntemimiz, aşağıdaki gibi olsun.
static void Main(string[] args) { Console.Write("Bir sayı giriniz: "); int sayi = Convert.ToInt32(Console.ReadLine()); if (AsalSayi(sayi)) Console.WriteLine(sayi + " asal sayıdır."); else Console.WriteLine(sayi + " asal sayı değildir!"); Console.ReadLine(); } private static bool AsalSayi(int sayi) { bool result = true; for (int i = 2; i < sayi - 1; i++) { if (sayi % i == 0) { result = false; i = sayi; } } if (sayi < 2) result = false; return result; }
Burada kullanıcıdan bir sayı girmesini isteyip, AsalSayi isimli metoda parametre olarak gönderiyoruz. Bu metot bize duruma göre true ya da false sonucunu dönecektir.
Burada döngüyü 2 den başlattık ve girilen sayının 1 eksiği kadar bir for döngüsü yazarak sayının modunu aldık.
Eğer ki sayı tam bölünürse result değişkenini false yaptık yani sayı asal değildir ve i = sayi diyerek de sayının döngüden çıkmasını sağladık ki program boşu boşuna her seferinde döngüye girmesin.
Buna ek olarak result değişkeninin ilk değeri true olduğundan ve döngü 2 den başladığı için de 2 den küçük girilen her sayıda döngüye girmeyeceği için result = true olacaktı bu yüzden 2 den küçük her sayı için result = false dedik. Sonuç olarak metot bize true dönerse sayı asal, false dönerse sayı asal değildir gibi bir kontrol yaparak girilen sayının asal olup olmadığını bulduk.
İkinci yöntem ise aşağıdaki gibi olsun.
Console.Write("Bir sayı giriniz: "); int sayi = Convert.ToInt32(Console.ReadLine()); int sayac = 0; for (int i = 1; i <= sayi; i++) { if (sayi % i == 0) sayac++; } if (sayac == 2) Console.WriteLine("Girilen {0} sayısı asaldır.", sayi); else Console.WriteLine("Girilen " + sayi + " sayısı asal değildir"); Console.ReadLine();
Burada kullanıcıdan bir sayı girmesini istedik, bu girilen sayıyı sayi adlı bir değişkene atadık. Ardından for döngüsü kullanarak girilen sayının modunu alma işlemini uyguladık. Burada girilen sayı 1'e ve kendisine tam bölündüğünde sayac değişkeninin 1 arttırdık. Döngü bittikten sonra ise eğer sayac değişkeni 2 ye eşitse sayı asaldır, değilse sayı asal değildir gibi bir koşul ekledik. Bu anlattığım yöntemde asal sayı bulmada diğer bir yöntem olarak kullanılabilir.
Basitte olsa asal sayı bulmanın mantığını göstermeye çalıştım, yeni başlayanlar için umarım faydası olur.