Project Euler 1: 3 ve 5'in Katları

- Özgün
Project Euler 1: Eğer 10'un altında kalan ve 3 ile 5'in katları olan bütün doğal sayıları sıralarsak: 3, 5, 6 ve 9'u elde ederiz. Bu sayıların toplamı da 23'tür. 1000'den küçük 3 veya 5'e bölünen tüm sayıların toplamları nedir?
Project Euler 1 oldukça basit bir soru. Soru numarası arttıkça soruların zorluğu da artıyor. Bu soru 30 Haziran 2016 itibariyle 574622 kişi tarafından çözülmüş durumda.
Çözüm
Bizden istenen 1000'in altında 3 veya 5'in bölenlerini bulup, bunları toplamamız. Bu soruda dikkat etmemiz gereken nokta, bize sorunun açıklamasında açıkça gösterilmemiş. 10'a kadar olan 3 ve 5'in katlarında bu iki sayının ortak katı yok. Örneğin 20'ye kadar olan sayılar için elde edeceklerimiz 3, 5, 6, 9, 10, 12, 15, 18 olacaktır. Fakat burada bir problem var! 15 sayısı hem 3'e hem de 5'e bölünüyor
Eğer yazdığınız program 3'e bölünen sayıları ayrıca topluyor, 5'e bölünenleri ayrıca topluyorsa, ortak katları iki kez toplama katacaktır. Bu da yanlış sonuç bulmanız demek. İsterseniz her ikisini ayrı ayrı toplayıp, bu genel toplamdan ortak katları da çıkarabilirsiniz.
Böyle bir yaklaşım en basit yaklaşımdır. Şu an için bir problem yok, fakat sayılar büyüdüğünde ve yapılacak işlem arttığında böylesine kaba yaklaşımlar bizim işlem süremizi aşırı uzatarak problemi çözmemizi engelleyecektir. Öncelikle bu kaba çözüme bir bakalım, ardından kodumuzu nasıl hızlandırabileceğimizi düşünelim.

Sonuç: 233168 olarak bulunur.
Mantıksal Yaklaşım
Aslında soruda bize verilen "3 veya 5" ifadesi bir mantık operatörü içeriyor. C#'da veya operatörü || ile gösterilir. Bunu kodumuz içerisinde kullanarak biraz daha basit bir ifade elde edebiliriz.
C# Çözümü

Python Çözümü

Matematiksel Yaklaşım
Buradaki sorulara matematiksel çözümler getirmemiz işimizi oldukça kolaylaştırıyor. Hatta bir noktadan sonra soruların zorluğu, matematiksel yöntemler kullanmayı zorunlu kılıyor. Bu sorumuzda toplamlar söz konusu olduğu için basit toplam yöntemlerini inceleyerek kağıt kalemle dahi birkaç dakikada cevabı bulmak mümkün. İsterseniz elle yapın, isterseniz metodu kullanarak programa yaptırın. Benim kağıt üzerinde hesaplayarak çözmem beş dakikamı ya aldı ya da almadı.
Kaba çözümde 1'den 1000'e kadar olan sayıları bir bir artırarak her seferinde 3 veya 5'e bölünüp bölünmediğine bakıyorduk. Oysa ki katların toplamı şeklinde ifade edebiliriz. N1 3 ve katlarının toplamı olmak üzere;

Aynı şekilde 5 için de

Ayrıca çıkarmak istediğimi 15'in katlarını da aynı şekilde bulabiliriz.

Gauss yöntemini uygulayarak ardışık sayı dizilerinin toplamlarını kolaylıkla bulabiliriz. N=1+2+3+...+n şeklinde verilen bir dizi için toplam;
Aslında maddi destek istememizin nedeni çok basit: Çünkü Evrim Ağacı, bizim tek mesleğimiz, tek gelir kaynağımız. Birçoklarının aksine bizler, sosyal medyada gördüğünüz makale ve videolarımızı hobi olarak, mesleğimizden arta kalan zamanlarda yapmıyoruz. Dolayısıyla bu işi sürdürebilmek için gelir elde etmemiz gerekiyor.
Bunda elbette ki hiçbir sakınca yok; kimin, ne şartlar altında yayın yapmayı seçtiği büyük oranda bir tercih meselesi. Ne var ki biz, eğer ana mesleklerimizi icra edecek olursak (yani kendi mesleğimiz doğrultusunda bir iş sahibi olursak) Evrim Ağacı'na zaman ayıramayacağımızı, ayakta tutamayacağımızı biliyoruz. Çünkü az sonra detaylarını vereceğimiz üzere, Evrim Ağacı sosyal medyada denk geldiğiniz makale ve videolardan çok daha büyük, kapsamlı ve aşırı zaman alan bir bilim platformu projesi. Bu nedenle bizler, meslek olarak Evrim Ağacı'nı seçtik.
Eğer hem Evrim Ağacı'ndan hayatımızı idame ettirecek, mesleklerimizi bırakmayı en azından kısmen meşrulaştıracak ve mantıklı kılacak kadar bir gelir kaynağı elde edemezsek, mecburen Evrim Ağacı'nı bırakıp, kendi mesleklerimize döneceğiz. Ama bunu istemiyoruz ve bu nedenle didiniyoruz.

şeklinde ifade edilir. Bu durumda (1) + (2) - (3) işlemi bize sonucu vereceğinden cevap (4) no'lu ifade kullanılarak aşağıdaki gibi bulunur.

Böylelikle sonuç 166833 + 99500 - 33165 = 233168 olarak bulunur.
Ögetay Kayalı
Evrim Ağacı'nda tek bir hedefimiz var: Bilimsel gerçekleri en doğru, tarafsız ve kolay anlaşılır şekilde Türkiye'ye ulaştırmak. Ancak tahmin edebileceğiniz gibi Türkiye'de bilim anlatmak hiç kolay bir iş değil; hele ki bir yandan ekonomik bir hayatta kalma mücadelesi verirken...
O nedenle sizin desteklerinize ihtiyacımız var. Eğer yazılarımızı okuyanların %1'i bize bütçesinin elverdiği kadar destek olmayı seçseydi, bir daha tek bir reklam göstermeden Evrim Ağacı'nın bütün bilim iletişimi faaliyetlerini sürdürebilirdik. Bir düşünün: sadece %1'i...
O %1'i inşa etmemize yardım eder misiniz? Evrim Ağacı Premium üyesi olarak, ekibimizin size ve Türkiye'ye bilimi daha etkili ve profesyonel bir şekilde ulaştırmamızı mümkün kılmış olacaksınız. Ayrıca size olan minnetimizin bir ifadesi olarak, çok sayıda ayrıcalığa erişim sağlayacaksınız.
Makalelerimizin bilimsel gerçekleri doğru bir şekilde yansıtması için en üst düzey çabayı gösteriyoruz. Gözünüze doğru gelmeyen bir şey varsa, mümkünse güvenilir kaynaklarınızla birlikte bize ulaşın!
Bu makalemizle ilgili merak ettiğin bir şey mi var? Buraya tıklayarak sorabilirsin.
Soru & Cevap Platformuna Git- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
Evrim Ağacı'na her ay sadece 1 kahve ısmarlayarak destek olmak ister misiniz?
Şu iki siteden birini kullanarak şimdi destek olabilirsiniz:
kreosus.com/evrimagaci | patreon.com/evrimagaci
Çıktı Bilgisi: Bu sayfa, Evrim Ağacı yazdırma aracı kullanılarak 03/05/2025 07:41:56 tarihinde oluşturulmuştur. Evrim Ağacı'ndaki içeriklerin tamamı, birden fazla editör tarafından, durmaksızın elden geçirilmekte, güncellenmekte ve geliştirilmektedir. Dolayısıyla bu çıktının alındığı tarihten sonra yapılan güncellemeleri görmek ve bu içeriğin en güncel halini okumak için lütfen şu adrese gidiniz: https://evrimagaci.org/s/12645
İçerik Kullanım İzinleri: Evrim Ağacı'ndaki yazılı içerikler orijinallerine hiçbir şekilde dokunulmadığı müddetçe izin alınmaksızın paylaşılabilir, kopyalanabilir, yapıştırılabilir, çoğaltılabilir, basılabilir, dağıtılabilir, yayılabilir, alıntılanabilir. Ancak bu içeriklerin hiçbiri izin alınmaksızın değiştirilemez ve değiştirilmiş halleri Evrim Ağacı'na aitmiş gibi sunulamaz. Benzer şekilde, içeriklerin hiçbiri, söz konusu içeriğin açıkça belirtilmiş yazarlarından ve Evrim Ağacı'ndan başkasına aitmiş gibi sunulamaz. Bu sayfa izin alınmaksızın düzenlenemez, Evrim Ağacı logosu, yazar/editör bilgileri ve içeriğin diğer kısımları izin alınmaksızın değiştirilemez veya kaldırılamaz.