Problem: Given is a positive integer N. Consider repeatedly applying the operation below on N:    * First, choose a positive integer z satisfying all of the conditions below:     * z can be represented as z=p^e, where p is a prime number and e is a positive integer;     * z divides N;     * z is different from all integers chosen in previous operations.   * Then, replace N with N/z.  Find the maximum number of times the operation can be applied.

Submission attempts (in order):
import math

n = int(input())
Max = 10**6
count = 0

def sosu(x):
  for i in range(2,int(math.sqrt(n))+1):
    if n % i == 0:
      return False
  return True

if sosu(n):
  print(count +1)
  exit()

alst = [0] * Max
alst[0] = 2
alst[1] = 1
for i in range(2,Max):
  for j in range(i, Max, i):
    alst[j] += 1
    if alst[j] >= 2:
      alst[j] = 2
      break

Prime = []
for i in range(1,Max):
  if alst[i] == 1:
    Prime.append(int(i))

p = len(Prime)
PF = [0]*Max


for i in range(1,p):
  if n%Prime[i] == 0:
    for j in range(20,1,-1):
      if n%Prime[i]**j == 0:
        count += 1
        PF[i] = j
        n = n / Prime[i]
        if sosu(n):
          print(count + 1)
          exit()
          
print(count)


import math

n = int(input())
Max = 10**6
count = 0

def sosu(x):
  for i in range(2,int(math.sqrt(n))+1):
    if n % i == 0:
      return False
  return True

if sosu(n):
  print(count +1)
  exit()

alst = [0] * Max
alst[0] = 2
alst[1] = 1
for i in range(2,Max):
  for j in range(i, Max, i):
    alst[j] += 1
    if alst[j] >= 2:
      alst[j] = 2
      break

Prime = []
for i in range(1,Max):
  if alst[i] == 1:
    Prime.append(int(i))

p = len(Prime)
PF = [0]*Max


for i in range(1,p):
  if n%Prime[i] == 0:
    for j in range(20,1,-1):
      if n%Prime[i]**j == 0:
        count += 1
        PF[i] = j
        n = n / Prime[i]
        sosu(n)
print(count)


import math

n = int(input())
Max = 10**6
count = 0

def sosu(x):
  for i in range(2,int(math.sqrt(n))+1):
    if x % i == 0:
      return False
  return True

if sosu(n):
  print(count +1)
  exit()

alst = [0] * Max
alst[0] = 2
alst[1] = 1
for i in range(2,Max):
  for j in range(i, Max, i):
    alst[j] += 1
    if alst[j] >= 2:
      alst[j] = 2
      break

Prime = []
for i in range(1,Max):
  if alst[i] == 1:
    Prime.append(int(i))

p = len(Prime)
PF = [0]*Max


for i in range(1,p):
  if n%Prime[i] == 0:
    for j in range(20,1,-1):
      if n%Prime[i]**j == 0:
        count += 1
        PF[i] = j
        n = n / Prime[i]
        if sosu(n):
          print(count + 1)
          exit()
          
print(count)


import collections

def prime_factorize(n):
    a = []
    while n % 2 == 0:
        a.append(2)
        n //= 2
    f = 3
    while f**2 <= n:
        if n % f == 0:
            a.append(f)
            n //= f
        else:
            f += 2
    if n != 1:
        a.append(n)
    return a
  
count = 0
N = int(input())

if N <= 1:
  print(0)
  exit()
else:
  c = collections.Counter(prime_factorize(N))

  K = [sum(range(1,i)) for i in range(2,11)]
  # = [1, 3, 6, 10, 15, 21, 28, 36, 45]
 
  for i in c:
    for j in range(1,len(K)):
      if c[i] < K[j]:
        count += j
        break

  print(count)

Verdicts: Wrong Answer

Wrong Answer

Wrong Answer

Accepted