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