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..
#asal #sayı #primes