19 Şubat 2017 Pazar
Twitter

LINQ ile asal sayıların bulunması

1-100 arası asal sayıların bulunmasını tek bir LINQ sorgusu ile nasıl yapabiliriz?

Klasik yolla bir sayının asal sayı olup olmadığını şu methodla öğrenebilirsiniz:

bool AsalMi(int sayi)
{
  for (int i = 2; i < sayi; i++)
  {
    if (sayi % i == 0) return false;
  }
  return true;
}

1-100 arası asal sayıları bulmak için bir for döngüsü ile listeleme yapabilirsiniz.

Ama LINQ çıktı mertlik bozuldu diyoruz ya bakın 1-100 arası asal sayılar tek bir LINQ sorgusu ile nasıl bulunabilir:

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

static void Main(string[] args)
{
  var asalSayilar = AsalSayilar(100);
  asalSayilar.ToList().ForEach(Console.WriteLine);
}

Çıktısı ise şu şekilde:

Herkese kolay gelsin..

Değerlendirme

Yazım dilinin sadeliği ve anlaşılabilirliği Puan: 0,00 (0 oy)
Yazıdaki kodların kalitesi Puan: 0,00 (0 oy)
İhtiyaca cevap verme Puan: 0,00 (0 oy)
Tavsiye edilebilirlik Puan: 0,00 (0 oy)
Genel değerlendirme Puan: 0,00 (0 oy)
Puanlamalar 5 üzerindendir.
  • Site Yorumları
  • Facebook Yorumları Facebook Yorumları
Yeni yorum yaz Toplam: 1, Onay bekleyen: 0.
  1. ekrem

    bu süper bir şey :) hakikaten bu işi seviyorum