Python Örnekleri

Python ile “Digit Faktöriyel” Olan Sayıları Bulma

Bu yazımızda, Python ile 100000’in altındaki “dijit faktöriyel” olan sayıları listeleyen örnek bir program yazacağız.

Kodumuzu yazmaya geçmeden önce digit faktöriyelin ne olduğunu açıklayalım; digit faktöriyel, rakamlarının faktöriyelleri toplamı yine kendisine eşit olan sayılara denilmektedir. Buna göre, 145 sayısı için 1! + 4! + 5! = 1+24+120 = 145 olduğundan 145 sayısı digit faktöriyeldir. Ancak belirtmek isterim ki, 1 ve 2 sayıları ilgili şartı sağlamalarına rağmen digit faktoriyel olarak değerlendirilmez.

Kodu Trinket üzerinden çalıştırarak inceleyebilirsiniz. Kodumuzun daha da anlaşılır olması adına neyi niye yaptığımızı maddeler halinde açıklayalım:

  1. Fonksiyon Tanımı (def digit_factorials(max_limit)): Özel bir özelliğe sahip sayıları bulmak için yeniden kullanılabilir bir fonksiyon tanımladık. Bu fonksiyon, max_limit parametresi alır ve bu sınırın altındaki tüm “digit faktöriyel” sayıları bulur.
  2. Digit Faktöriyel Sayılar Listesi (digit_factorial_numbers = []): Fonksiyonun çalışması sırasında bulunan “digit faktöriyel” sayıları saklamak için liste kullandık.
  3. Dış Döngü (For Döngüsü): for number in range(10, max_limit): ile, 10’dan (1 ve 2 hariç tutulduğu için başlangıç 10’dur) max_limit parametresine kadar olan tüm sayıları for döngüsü ile tek tek kontrol ediyoruz.
  4. Rakamların Faktöriyellerinin Toplanması: Her bir sayının rakamlarını ayrı ayrı alıp (for digit in str(number)) her birinin faktöriyelini hesaplayarak (factorial(int(digit))) topluyoruz (sum_of_factorials = sum(factorial(int(digit)) for digit in str(number))).
  5. Digit Faktöriyel Olup Olmadığının Kontrolü: Eğer bir sayının rakamlarının faktöriyellerinin toplamı kendisine eşit mi diye kontrol etmek için if koşulunu kullandık (if sum_of_factorials == number:) ve eğer öyleyse append metodu ile listeye ekledik (digit_factorial_numbers.append(number)).
  6. sum_of_factorials = sum(factorial(int(digit)) for digit in str(number)) ifadesi biraz karışık görülebilir. O yüzden bu kısmı da es geçmek istemedim:
    • str(number): Öncelikle number değişkeni, sayısal bir değeri temsil etmektedir. Bu sayıyı str() fonksiyonu ile bir string’e çeviriyoruz. Böylece, sayının her bir rakamını ayrı ayrı işlemek mümkün hale gelmektedir. Örneğin, number 145 ise, str(number) ifadesi '145' olur.
    • for digit in str(number): Bu döngü, number sayısının her bir rakamını (digit) sırayla alır ve işler. Bu döngü, örneğin ‘145’ için üç kez çalışır: ilk önce ‘1’ için, sonra ‘4’ için ve en son ‘5’ için çalışır.
    • int(digit): Her bir digit (rakam), şu anda bir string’dir. Örneğin, ‘1’, ‘4’, ‘5’. Bu rakamları işleyebilmek için onları tekrar integer’a (tam sayıya) çevirmemiz gerekmektedir. Yani int('1') ifadesi 1’e, int('4') ifadesi 4’e, ve int('5') ifadesi 5’e dönüşür.
    • factorial(int(digit)): Her bir rakamın faktöriyelini alıyoruz. Örneğin, factorial(1), factorial(4), ve factorial(5).
    • sum(... for digit in str(number)): Tüm bu faktöriyel hesaplamalarının sonuçlarını topluyoruz. Yani, 1! + 4! + 5! ifadesinin sonucunu hesaplıyoruz.
    • sum_of_factorials: Tüm bu işlemlerin sonucu, sum_of_factorials değişkenine atanır. Bu değişken, number sayısının rakamlarının faktöriyellerinin toplamını temsil eder. Bu işlem, her bir sayı için for number in range(10, max_limit): döngüsü içinde tekrarlanır.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu

😔 Reklam Engelleyicisi 😔

Sitenin varlığını sürdürebilmesi adına reklam engelleyicinizi (Adblocker) kapatmanızı rica ediyoruz 😔