def isPrime(n):
if (n==2):
return True
if (n%2==0):
return False
k=3
while(k < n//2):
if (n%k)==0:
return False
k+=2
return True
def mkPrimeList(n):
return list(filter(isPrime,range(2,n)))
def factorize(n):
plist=mkPrimeList(n)
res=[]
nn=n
for p in plist:
if (nn%p==0):
c=0
while(nn%p==0):
c+=1
nn//=p
res+=[(p,c)]
return res
print(str(factorize(100)))
ZGVmIGlzUHJpbWUobik6CglpZiAobj09Mik6CgkJcmV0dXJuIFRydWUKCWlmIChuJTI9PTApOgoJCXJldHVybiBGYWxzZQoJaz0zCgl3aGlsZShrIDwgbi8vMik6CgkJaWYgKG4layk9PTA6CgkJCXJldHVybiBGYWxzZQoJCWsrPTIKCXJldHVybiBUcnVlCgkKZGVmIG1rUHJpbWVMaXN0KG4pOgoJcmV0dXJuIGxpc3QoZmlsdGVyKGlzUHJpbWUscmFuZ2UoMixuKSkpCgkKZGVmIGZhY3Rvcml6ZShuKToKCXBsaXN0PW1rUHJpbWVMaXN0KG4pCglyZXM9W10KCW5uPW4KCWZvciBwIGluIHBsaXN0OgoJCWlmIChubiVwPT0wKToKCQkJYz0wCgkJCXdoaWxlKG5uJXA9PTApOgoJCQkJYys9MQoJCQkJbm4vLz1wCgkJCXJlcys9WyhwLGMpXQkKCXJldHVybiByZXMKCQpwcmludChzdHIoZmFjdG9yaXplKDEwMCkpKQo=