from math import sqrt



N = int(eval(input()))



rn = int(sqrt(N))

sieve = [0] * (rn + 1)

sieve[0] = -1

sieve[1] = -1

t = [0] * (rn + 1)

for i in range(2, rn + 1):

    if sieve[i] != 0:

        continue

    sieve[i] = i

    j = i

    while j < rn + 1:

        t[j] = 1

        j *= i

    for j in range(i * i, rn + 1, i):

        if sieve[j] == 0:

            sieve[j] = i



result = 0

last = -1

for i in range(2, rn + 1):

    if t[i] == 0:

        continue

    if N % i == 0:

        result += 1

        N //= i

        last = i

if N != 1 and N > rn:

    result += 1

print(result)

from math import sqrt





def prime_factorize(n):

    result = []

    for i in range(2, int(sqrt(n)) + 1):

        if n % i != 0:

            continue

        t = 0

        while n % i == 0:

            n //= i

            t += 1

        result.append((i, t))

        if n == 1:

            break

    if n != 1:

        result.append((n, 1))

    return result





N = int(eval(input()))



result = 0

for p, e in prime_factorize(N):

    i = 1

    while e >= i:

        result += 1

        e -= i

        i += 1

print(result)

from math import sqrt

N = int(eval(input()))
rn = int(sqrt(N))
sieve = [0] * (rn + 1)
sieve[0] = -1
sieve[1] = -1
t = [0] * (rn + 1)
for i in range(2, rn + 1):
    if sieve[i] != 0:
        continue
    sieve[i] = i
    j = i
    while j < rn + 1:
        t[j] = 1
        j *= i
    for j in range(i * i, rn + 1, i):
        if sieve[j] == 0:
            sieve[j] = i
result = 0
last = -1
for i in range(2, rn + 1):
    if t[i] == 0:
        continue
    if N % i == 0:
        result += 1
        N //= i
        last = i
if N != 1 and N > rn:
    result += 1
print(result)

from math import sqrt


def prime_factorize(n):
    result = []
    for i in range(2, int(sqrt(n)) + 1):
        if n % i != 0:
            continue
        t = 0
        while n % i == 0:
            n //= i
            t += 1
        result.append((i, t))
        if n == 1:
            break
    if n != 1:
        result.append((n, 1))
    return result


N = int(eval(input()))
result = 0
for p, e in prime_factorize(N):
    i = 1
    while e >= i:
        result += 1
        e -= i
        i += 1
print(result)

+ +def prime_factorize(n): +    result = [] +    for i in range(2, int(sqrt(n)) + 1): +        if n % i != 0: +            continue +        t = 0 +        while n % i == 0: +            n //= i +            t += 1 +        result.append((i, t)) +        if n == 1: +            break +    if n != 1: +        result.append((n, 1)) +    return result + + -rn = int(sqrt(N)) -sieve = [0] * (rn + 1) -sieve[0] = -1 -sieve[1] = -1 -t = [0] * (rn + 1) -for i in range(2, rn + 1): -    if sieve[i] != 0: -        continue -    sieve[i] = i -    j = i -    while j < rn + 1: -        t[j] = 1 -        j *= i -    for j in range(i * i, rn + 1, i): -        if sieve[j] == 0: -            sieve[j] = i -last = -1 -for i in range(2, rn + 1): -    if t[i] == 0: -        continue -    if N % i == 0: +for p, e in prime_factorize(N): +    i = 1 +    while e >= i: -        N //= i -        last = i -if N != 1 and N > rn: -    result += 1 +        e -= i +        i += 1