Sayının asal çarpanlarını üslü ifade ile gösterme

a = int(input("Sayı giriniz:"))
if a >= 50 or a <= 0:
  print("Lütfen 0 ile 50 arasında bir sayı girin")
else:
  asalsayı = [2,3,5,7, 11,13,17, 19,23,29, 31,37,41, 43,47]
  b = []
  sayı = 0
  for i in asalsayı:
      for j in range(1,8):
          if a % i == 0:
             b.append(i)
             a = a / i
          else:
               break
  print(b)

Asal çarpanlarına ayırıyor buraya kadar gelebildim fakat nasıl üslü ifade ile göstereceğimi çözemedim. Yardımcı olursanız sevinirim

bu ifade yanlış değil mi. a büyüktür/eşittir 50 yada a küçüktür/eşittir 0
farkıl bir şekilde mantık hatası yaptım özür dilerim.

carpan1^carpan1_sayisi * carpan2^carpan2_sayisi * …

Çarpanların sayıları girilen değere göre değişecek ama. Çarpan sayısını nasıl bulabilri program onu sormaya çalışıyorum aslında

x = input()
list = []
for i in range(int(x)):
    i +=1
    if (int(x) % i) ==0:
        list.append(i)
print(len(list))

Çarpan sayısını basit bir for döngsüüyle bulabilirsiniz. Aynı şekilde sayıdan küçük tüm asal sayıları da bir for döngüsüyle bulabilirsiniz, bu sayede kendinizi bir sayıyla limitlemez aynı zamanda bütün asal sayıları bulmak gibi bir zahmetden kurtulursunuz.

b listesinde var?

Elle tek tek hepsi sayilabilir veya Counter kullanilabilir:

  import collections
  c = collections.Counter(b)
  for k, v in c.items():
    print(k, v)
1 Beğeni

Elle saymaktansa bilgisayarın bulmasını istiyordum, counterı nasıl kullanacağımı bilmiyordum. Teşekkür ederim

Elle saymaktan kastim yukaridaki gibi bir kod yazmak… Amac pratik yapmak degil mi?