Python: Girilen Sayının Asal Çarpanlarını Bulan Program

Kullanıcının girdiği sayıyı alıp bunun asal çarpanlarını bulan programa ait Python kodları aşağıdaki gibidir.
Python
def asal_carpanlari_bul(n):
carpanlar = set() # Tekrar eden çarpanları önlemek için set kullan
# 2'yi ayrı kontrol et
while n % 2 == 0:
carpanlar.add(2) # Set'e ekle
n = n // 2
# 3'ten başlayarak sadece tek sayıları kontrol et
bolen = 3
while bolen * bolen <= n:
while n % bolen == 0:
carpanlar.add(bolen) # Set'e ekle
n = n // bolen
bolen += 2 # Sadece tek sayıları kontrol et
# Eğer n hala 1'den büyükse, kendisi asal çarpandır
if n > 1:
carpanlar.add(n)
return sorted(carpanlar) # Sıralı liste olarak döndür
# Kullanıcıdan sayı al
sayi = int(input("Bir sayı girin: "))
if sayi < 2:
print("2'den büyük bir sayı girin.")
else:
carpanlar = asal_carpanlari_bul(sayi)
print(f"{sayi} sayısının asal çarpanları: {carpanlar}")
Yukarıdaki kodda asal çarpanları tutmak için set veri tipini kullandım. Böylece tekrar eden asal çarpanlar eklenmeyecektir. Örneğin 12 sayısının asal çarpanları [2, 2, 3] şeklinde olması gerekirken yukarıdaki kod ile sadece [2,3] olarak gelecektir.
Eğer hem tekrarsız hem de tekrarlı asal çarpanları bulmak istiyorsanız aşağıdaki kodu deneyebilirsiniz.
Python
def asal_carpanlari_bul(n):
carpanlar = [] # Tüm çarpanları saklamak için liste
benzersiz_carpanlar = set() # Benzersiz çarpanlar için set
# 2'yi ayrı kontrol et
while n % 2 == 0:
carpanlar.append(2)
benzersiz_carpanlar.add(2)
n = n // 2
# 3'ten başlayarak sadece tek sayıları kontrol et
bolen = 3
while bolen * bolen <= n:
while n % bolen == 0:
carpanlar.append(bolen)
benzersiz_carpanlar.add(bolen)
n = n // bolen
bolen += 2
# Eğer n hala 1'den büyükse, kendisi asal çarpandır
if n > 1:
carpanlar.append(n)
benzersiz_carpanlar.add(n)
return sorted(benzersiz_carpanlar), carpanlar
# Kullanıcıdan sayı al
sayi = int(input("Bir sayı girin: "))
if sayi < 2:
print("2'den büyük bir sayı girin.")
else:
benzersiz_carpanlar, tum_carpanlar = asal_carpanlari_bul(sayi)
print(f"{sayi} sayısının asal çarpanları: {benzersiz_carpanlar}")
print(f"{sayi} sayısının tüm asal çarpanları (tekrarlı): {tum_carpanlar}")