Project Euler 3. Soru Cevabı

Project Euler 3. Soru Cevabı

 Project Euler 3. Soru Cevabı

number = 600851475143
counter = 2
while counter * counter <= number:
    if number % counter:
        counter += 1
    else:
        number //= counter
        result = number
print(result)

Burada bir while döngüsü kullanıyoruz ve yapmamız gereken işlemlerin işlem bitene kadar devam etmesini sağlıyoruz.

While döngüsünden önce "number" ve "counter" olarak 2 adet değişkenimiz bulunuyor. Bunlardan number en büyük asal sayısını bulacağımız sayıyı temsil ederken counter ise sayıyı böldüğümüz değeri temsil ediyor.

While döngüsünü bölen sayı * bölen sayı sapıyoruz ve sayımızdan küçük veya eşitse döngümüzün çalışması için koşulumuzu oluşturuyoruz.

While içinde bir if koşulu ile sayımızın modunu alma işlemini sorguluyoruz ve eğer alabiliyorsa yani 0 çıkıyorsa sayacımızı bir arttırıyoruz. Eğer sayımızın modunu alamıyorsa sayımızı counter kaç kere bölüyorsa ona eşitliyoruz. Daha sonrasında "result" değişkenini "number" değişkenine eşitliyoruz ve döngü kırıldığı zaman ekrana yazdırıyoruz.

Not: Burada sayıdan başlayıp geriye doğru giden bir algoritma çalıştırıyoruz, böylelikle 0 dan sayıya göre giden bir algoritmaya göre çok daha hızlı sonuç veriyor.


Doğru cevabı görmek için burayı tıklayın.