26 Eylül 2017 Salı
Twitter

LINQ ile asal çarpanların bulunması

Asal çarpanların bulunması ile ilgili bir yazı...

Daha önceden asal sayıların bulunması ile ilgili bir yazı hazırlamıştım.

Bu yazıda asal sayıların bulunması yöntemini kullanarak, asal çarpanların bulunmasını göstereceğim:

Az laf çok kod:

public static IEnumerable<int> AsalSayilar()
{
    var ints = Enumerable.Range(2, Int32.MaxValue - 1);
    return ints.Where(x => !ints
                            .TakeWhile(y => y < x)
                            .Any(y => x % y == 0));
}

public static IEnumerable<int> CarpanlariAl(int input)
{
    int first = AsalSayilar()
                .TakeWhile(x => x <= Math.Sqrt(input))
                .FirstOrDefault(x => input % x == 0);
    return first == 0
            ? new[] { input }
            : new[] { first }.Concat(CarpanlariAl(input / first));
}
static void Main(string[] args)
{
    bool ok = true;
    int sayi = 0;

    while (ok)
    {
        Console.WriteLine("Asal çarpanları bulunacak sayıyı giriniz, Çıkış için: Enter.");
        string str = Console.ReadLine();

        ok = int.TryParse(str, out sayi);

        if (string.IsNullOrEmpty(str)) return;

        var carpanlar = CarpanlariAl(sayi);
        carpanlar.ToList().ForEach(Console.WriteLine);
    }
}

Bu da programın çıktısı:

Asal çarpanlar

 

Değerlendirme

Yazım dilinin sadeliği ve anlaşılabilirliği Puan: 4,75 (1 oy)
Yazıdaki kodların kalitesi Puan: 3,03 (2 oy)
İhtiyaca cevap verme Puan: 2,85 (1 oy)
Tavsiye edilebilirlik Puan: 0,00 (0 oy)
Genel değerlendirme Puan: 4,30 (1 oy)
Puanlamalar 5 üzerindendir.
  • Site Yorumları
  • Facebook Yorumları Facebook Yorumları
Yeni yorum yaz
Henüz bir yorum yazılmadı. İlk yazan siz olabilirsiniz.