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