![]() Euler Projesi . | |
Adres | projecteuler.net |
---|---|
Ticari | Hayır |
Site türü | Matematiksel ve algoritmik problemleri çözme |
Dil | ingilizce |
Kayıt | Bedava |
Tarafından yaratıldı | Colin Hughes, namı diğer euler |
Başlatmak | 5 Ekim 2001 |
Project Euler , bilgisayar programları kullanılarak çözülmek üzere tasarlanmışbir dizi matematik problemi sunanbir web sitesidir . Projenin amacı matematik ve bilgisayar bilimlerine ilgi duyan yetişkinleri ve öğrencileri çekmektir. Şu anda, herbiri mütevazı güce sahipbir bilgisayarda etkili bir algoritma ileprensipte bir dakikadan daha kısa sürede çözülebilen, çeşitli zorluk derecelerine sahip 700'den fazla problem içermektedir. Site 2001'de oluşturulduğundan beri, şu anda her iki haftada bir olmak üzere yeni sayılar kademeli olarak eklenmektedir.. Her soruna özel bir foruma, onu çözen kullanıcılar erişebilir. Bir Puanlar bölümü de üyeleri çözülen sorun sayısına göre sıralar. Çözülen sorunların sayısına göre on dört düzey sıralamanın yanı sıra son sorunların çözülme hızına dayalı özel bir sıralama vardır.
Site 2001 yılında oluşturulduğundan beri, siteye 1.000.000'den fazla kullanıcı kaydolmuştur.
İlk sorunun çevirisi:
"10'dan küçük, 3 veya 5'in katları olan tüm doğal sayıları listelersek, 3, 5, 6 ve 9 elde ederiz. Bu sayıların toplamı 23'tür. 1000. "
Bu problem sitedeki en basit sorunlardan biri olmasına rağmen, naif bir algoritmaya kıyasla verimli bir algoritmanın potansiyel zaman tasarrufunu göstermektedir. Kaba kuvvet algoritması , 1000'den küçük her doğal sayıyı inceler ve kriterleri karşılayanların toplamını yeniler. Bu yöntemin uygulanması kolaydır; içinde sözde kod , bu yazılabilir:
initialiser SOMME à 0; pour n variant de 1 à 999 faire si n est un multiple de 3 ou de 5 alors // Autrement dit si n est divisible par 3 ou par 5 ajouter n à SOMME; fait; renvoyer SOMMEBununla birlikte, daha karmaşık problemler için verimli bir algoritma bulmak zorunlu hale gelir. Bu örnek için, dahil et-hariç tut ilkesini ve bir toplama formülünü kullanarak 1000 işlemi birkaç taneye indirebiliriz :
Nerede katları toplamını gösterir az ve tam sayıya yuvarlama belirtmektedir.
Python'da Uygulama :
def sum_1_to_n(n): return n * (n + 1) / 2 def sum_multiples(limit, a): return sum_1_to_n((limit - 1) // a) * a sum_multiples(1000, 3) + sum_multiples(1000, 5) - sum_multiples(1000, 15)Bu algoritma sayesinde, 10.000.000'den büyük bir sınır için çözüm neredeyse 1.000 kadar hızlı bir şekilde elde edilebilir.Landau gösteriminde , kaba kuvvet algoritması O ( n ) içindeyken verimli algoritma O (1) içindedir (eğer aritmetik işlemlerin maliyetinin sabit olduğunu düşünüyoruz).
Bugüne kadar, Euler Projesi'nin farklı çevirileri vardır (alfabetik sıraya göre listelenmiştir):
Dil | Bağlantı |
---|---|
• AT | |
İngilizce (resmi dil) | https://projecteuler.net |
Almanca | http://projekteuler.de/ |
• VS | |
Çince | Web sitesi 1: https://pe-cn.github.io/
Web sitesi 2: http://pe.spiritzhang.com/ |
Koreli | http://euler.synap.co.kr/ |
• F | |
Fransızca | https://www.facebook.com/projecteulerfrance/ |
• P | |
Farsça | https://marhale3.github.io/ |
• R | |
Romence | http://projecteuler.radumurzea.net/ |
Rusça | http://euler.jakumo.org/ |