Algoritma Soru Çözümü | 1

0x1D

Kıdemli Üye
23 Nis 2020
2,651
78
MARS
Bu seride Project Euler sorularını çözmeyi planlıyorum.

Soru :
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.


10'un altındaki 3'ün veya 5'in katı olan sayıları listelersek 3,5,6 ve 9 elde ederiz. Bu katların toplamı 23'tür.
1000'in altındaki 3 veya 5'in katları olan sayıların toplamını bulunuz

Sorunun linki : https://projecteuler.net/problem=1

Python için olan çözümümde öncelikle katlar adlı bir liste oluşturdum. Sonrasında 1000'e kadar giden bir for döngüsü oluşturdum. İf bloğu ile sayının 3'e veya 5'e bölünüp bölünmediğini kontrol ediyorum. Eğer en az birine bölünüyorsa katlar listemize ; katlar.append(_) diyerek ekliyor.Ve sum(katlar) ile toplamlarını veriyor.




Kod:
katlar = []
for _ in range(1000):
    if _%3== 0 or _%5==0:
        katlar.append(_)
print(sum(katlar))

Daha kısa bir kod arayanlar için :





İlk kod 10000 çalıştırmayı 6.4416181 saniyede
İkinci kod ise 5.1989709 saniyede tamamladı.

C# ile çözerken liste oluşturmak yerine toplam adında bir değişken oluşturdum. Yine bir for döngüsü var. For döngüsünün içinde ise sayının 3'e veya 5'e bölünüp bölünmediğini kontrol eden bir if bloğu var. Eğer en az birine bölünebiliyorsa sayı toplam değişkenine ekleniyor. En sonda ise toplam değişkenini ekrana yazdırıyor. Console.Read(); ise terminalin kapanmasını engelliyor. Eğer enterlarsak kapanacaktır.


Kod:
int toplam = 0;

            for (int _ = 0; _ < 1000; _++)
            {
                if (_%3==0 || _%5==0)
                {
                    toplam += _;
                }
            }
            Console.WriteLine(toplam);

            Console.Read();

 
Son düzenleme:

CyberXhackk

Kıdemli Üye
13 Mar 2016
3,132
10
C/C++ Dev.
Alin size güzel 2 adet algoritma sorusu birakiyorum, olur da serinin devamında çözmek isterseniz.

rXMpne.jpg


I0E6Xm.jpg
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.