Project Euler

Matematik/Programlama Problemi

Project Euler veya Euler Projesi, çözülmesi için matematiksel kavrayışlardan daha fazlasını gerektiren bir dizi zorlu matematik/bilgisayar programlama problemidir. Her ne kadar matematik zarif ve etkili yöntemlere ulaşmanıza yardımcı olsa da, çoğu problemi çözmek için bir bilgisayar ve programlama becerileri gerekecektir. Toplam problem sayısı 800'den fazladır[1] ve hala projeye etkin olarak problem eklenmektedir.

Project Euler
Euler
OluşturanColin Hughes
URLprojecteuler.net
SloganEuler Projesi, büyüleyici matematik dünyasına ilgi duyan herkesin becerilerini ve zevklerini desteklemek, meydan okumak ve geliştirmek için var.
Ticari?Hayır
Site türüProblem çözme
Kullanılabilir dil(ler)İngilizce
Başlama tarihi5 Ekim 2001 (22 yıl önce) (2001-10-05)

Hedef kitlesi, temel müfredatın öğrenmeye olan açlığını beslemeyen öğrencileri, geçmişi öncelikle matematik olmayan ancak matematiksel şeylere ilgi duyan yetişkinleri ve problem çözme ve matematiğini en ileri düzeyde tutmak isteyen profesyonelleri içerir.[2]

Örnek soru ve çözüm değiştir

Project Euler'in ilk sorusu:

3’ün veya 5’in katı olan 10’dan küçük tüm doğal sayıları listelersek, 3, 5, 6, ve 9’u elde ederiz. Bu katların toplamı 23’tür.

3’ün veya 5’in 1000’den küçük tüm katlarının toplamını bulunuz.[3]

Birinci problem tipik problemlerden çok daha basit olmasına rağmen, verimli bir algoritmanın yaptığı potansiyel farkı göstermeye yarar. Kaba kuvvet algoritması 1000'den az olan her doğal sayıyı inceler ve gereksinimleri karşılayan sayılarin toplamını tutar. Aşağıdaki sözde kodda gösterildiği gibi, bu yöntemin uygulanması kolaydır:

Sözde kod
Tanımla TOPLAM 0 olacak;
her bir SAYİ icin SAYİ 1 den 1000 e kadar
  eger SAYİ kalan 3 = 0 veya eger SAYİ kalan 5 = 0 ise
    SAYI ekle TOPLAM;
çıktı TOPLAM

Daha zor problemler için etkili bir algoritma bulmak giderek daha önemli hale gelir.Bu sorun için, dahil etme-hariç tutma ilkesini ve kapalı formlu bir toplama formülünü kullanarak 1000 işlemi azaltabiliriz.

Python
print sum(x for x in xrange(1, 1000) if x%3==0 or x%5==0)
C++
#include <iostream>
using namespace std;
int main( ) {
  int sum = 0;
  for (int i = 0; i < 1000; i++)
    if ( i % 3 == 0 || i % 5 == 0 )
      sum += i;
  cout << sum << endl;
  return 0;
}

Kaynakça değiştir

  1. ^ "Archived Problems - Project Euler". projecteuler.net. 1 Ocak 2023 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Ocak 2023. 
  2. ^ "Euler Projesi Hakkında Sayfası". 25 Ocak 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 25 Ocak 2020. 
  3. ^ "Euler Projesi'nin ilk sorusu". 25 Ocak 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 25 Ocak 2020. 

Dış bağlantılar değiştir