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:
- 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.
- İlk olarak,
- 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.
- İkinci olarak,
- 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 sonucusayi
değişkenine tekrar atar. Yani bu demektir ki,sayi //= bolen
ifadesi,sayi = sayi // bolen
ifadesinin kısa bir yolu gibidir.
- 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