1 Ocak 2014 Çarşamba

Problem 1 - Multiples of 3 and 5




Project Euler'in ilk sorusu. An itibariyle 342.000'in üzerinde kişi tarafından çözülmüş.



Soru

Eğer 10'un altında 3 veya 5'e bölen sayıları listelersek 3, 5, 6, 9 olduğunu ve bunların toplamının 23 ettiğini görüyoruz. 



1000'in altında 3 veya 5'e bölünebilen sayıların toplamı nedir?



Çözüm


Burada dikkat edilmesi gereken nokta "veya" terimi. 3 "ve" 5'e bölünebilen sayılar deseydi, 15'e bölünenlere bakmamız yeterli olacaktı.



Fakat 3 veya 5'e dediği zaman, tek tek 3'e 5'e bölünenleri toplamamız gerekiyor. Ve burada bir önemli nokta daha var! 15'in katlarını toplama iki kere eklemiş olacaksınız. Çünkü hem 3, hem 5'e bölünüyor, dolayısıyla onları toplama iki kere eklemiş oluyoruz. Bu yüzden 15'in katlarını toplamdan çıkaracağız.



Kodlama

int toplam = 0;



for (int n = 1; n < 1000; n++) // 3'e bölünenlerin toplamı

{   

   if (n % 3 == 0) // Tam bölünme sonucu kalan 0'dır.      

      toplam = toplam + n;   

   else if (n % 5 == 0)      

      toplam = toplam + n;   

   else if (n % 15 == 0) // Hem 3'e hem 5'e bölündükleri için toplama fazladan ekleniyor, fazlalığı çıkarıyoruz.              
      toplam = toplam - n;

}


Pytho

sum = 0

for i in range(1000):
    if(i%3==0 or i%5==0):
        sum = sum + i

print sum
Sonuç : 233168 

Hiç yorum yok:

Yorum Gönder