Euler – 5
Euler serisinin beşinci yazısında, Project Euler’in 5. sorusunu çözeceğiz;
Orijinal soru; 2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.
What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?
Türkçesi; 1′den 10′a kadar olan sayılara kalansız bölünebilen en küçük sayı 2520′dir.
1′den 20′ye kadar olan rakamların tamamına kalansız bölünebilen en küçük sayı kaçtır?
Önce siz çözmeyi deneyin, çözemezseniz ;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Collections;
static class Program
{
static void Main(string[] args)
{
var Sonuc = Enumerable.Range(1, 20).Carpanlar().Aggregate(1, (item, number) => item * number);
Console.WriteLine(Sonuc);
Console.Read();
}
private static IEnumerable<int> Carpanlar(this IEnumerable<int> liste)
{
if (!liste.Any())
yield break;
int carpan = liste.First();
if (carpan == 0)
yield break;
yield return carpan;
foreach (int item in (from item in liste.Skip(1) select (item % carpan == 0) ? item / carpan : item).Carpanlar())
yield return item;
}
}
İlgili diğer başlıklar:
Merhaba,
Benim çözümüm alttaki gibi:
static void Main(string[] args) { int limit = 20; int okek = 1; List<int> carpanlar = new List<int>(); int sayi; for (int i = 2; i <= limit; ++i) { if (okek % i == 0) { //birsey yapma } else { sayi = i; for (int j = 0; j < carpanlar.Count; ++j) { if (sayi % carpanlar[j] == 0) { sayi /= carpanlar[j]; } } carpanlar.Add(sayi); okek *= sayi; } } Console.WriteLine(okek.ToString()); Console.ReadLine(); }