Python ile Girilen Sayıyı Asal Çarpanlara Ayırma

Bu yazımızda, kullanıcı tarafından girilen sayıyı asal çarpanlarına ayıran örnek bir Python programı yazacağız.

Malumunuz, bir sayının çarpanlarından asal olanlarına bu sayının asal çarpanları denilmektedir. Örneğin, 30 sayısının çarpanları 1, 2, 3, 5, 6, 10, 15 ve 30’dur. Bu çarpanlar içerisinde asal olanları ise 2, 3 ve 5’tir. Dolayısıyla, 30 sayısının asal çarpanları 2, 3 ve 5’tir ve bu sayı 2 x 3 x 5 şeklinde asal çarpanlara ayrılabilir.

Bu bilgiler eşiğinde sorumuzu alternatif metotlarla beraber çözeceğiz. Ancak ilk olarak, kodumuzda yararlanacağımız çözüm yolumuzu gösteren akış şemasının adımlarını belirleyelim:

  1. Sayının asal çarpanlara ayrılma işlemi, sayı 1’e eşit olana kadar süreceği için “while döngüsünü” kullandık. Her döngü iterasyonunda, sayının o anki bölen sayısına (potansiyel asal çarpan) tam bölünüp bölünemediğini kontrol etmek için “if-else” koşullu ifadelerini kullandık.
def asal_carpanlara_ayir(sayi):
    asal_carpanlar = []
    bolen = 2
    while sayi > 1:
        if sayi % bolen == 0:
            asal_carpanlar.append(bolen)
            sayi //= bolen
        else:
            bolen += 1
    return asal_carpanlar

# Kullanıcıdan sayı alınması
girilen_sayi = int(input("Lütfen asal çarpanlarına ayırmak istediğiniz sayıyı giriniz: "))
asal_carpanlar = asal_carpanlara_ayir(girilen_sayi)
print("Asal Çarpanlar:", asal_carpanlar)

Kodu çalıştırmak için: Trinket. Yukarıdaki kodumuzda, //= ifadesi kafa karıştırıcı olabileceği için adım adım açıklayalım:

  • Bölme İşlemi (//):
    • İlk olarak, // operatörü iki sayının bölme işlemini gerçekleştirir.
    • Fakat bu bölme işlemi, sonucu “tam sayı” olarak verir. Örneğin, 10 // 3 işlemi 3.33 değil, 3 sonucunu verir.
  • Atama İşlemi (=):
    • İkinci olarak, = işareti bu bölme işleminin sonucunu bir değişkene atar.
    • Yani, yapılan bölme işleminin sonucu, bu işlemi uyguladığımız değişkenin yeni değeri haline gelir.
  • Birleşik İşlem (//=):
    • //= operatörü, yukarıdaki iki adımı tek bir adımda gerçekleştirir.
    • Örneğin, sayi //= bolen ifadesi, sayi‘yı bolen ile bölüp, bu sonucu sayi değişkenine tekrar atar. Yani bu demektir ki, sayi //= bolen ifadesi, sayi = sayi // bolen ifadesinin kısa bir yolu gibidir.

  1. Aşağıdaki yöntem, asal sayıları ayrı ayrı kontrol etmek yerine, tüm sayıları kontrol etmektedir.
def asal_carpanlara_ayir(sayi):
    asal_carpanlar = []
    bolen = 2
    while sayi > 1:
        while sayi % bolen == 0:
            asal_carpanlar.append(bolen)
            sayi //= bolen
        bolen += 1
    return asal_carpanlar

# Kullanıcıdan sayı alınması
girilen_sayi = int(input("Lütfen asal çarpanlarına ayırmak istediğiniz sayıyı giriniz: "))
asal_carpanlar = asal_carpanlara_ayir(girilen_sayi)
print("Asal Çarpanlar:", asal_carpanlar)

Kodu çalıştırmak için: Trinket

İlgili Makaleler

Bir yanıt yazın

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

Başa dön tuşu