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..