「$p^1, p^2, p^3, \ldots$ で割っていって割れた回数を記録し、
回数の記録を中止して$p$で割れるだけ割っておく」
を $p = 2, 3, 5, 7, 9, \ldots , \sqrt{N}$ で繰り返す。
素数がまだ残っているなら 1 を足す。
みたいな。
N = int(input())
n, p, score = N, 2, 0
while p ** 2 <= N:
e = 1
while n % (p ** e) == 0:
n //= (p ** e)
score += 1
e += 1
else:
while n % p == 0:
n //= p
p = p + 1 if p == 2 else p + 2
else:
if n != 1:
score += 1
print(score)
もう少しだけ短く
N = int(input())
n, p, score = N, 2, 0
while p ** 2 <= N:
e = 1
while n % (p ** e) == 0:
n //= (p ** e)
score += 1
e += 1
else:
while n % p == 0:
n //= p
p += 2 - (p == 2)
else:
score += n > 1
print(score)