Ana Sayfa > C#, Programlama > Euler – 5

Euler – 5

04 Eylül 2010

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:



  1. Muhammed Edip Okur
    Eylül 30th, 2010 at 15:04 | #1

    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();
    }