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

Python Sayının Asal Çarpanlarını Bulma

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}")