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.

Yorum Gönder