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())
num_list = [0] + [0] * int(math.sqrt(N))  # 0~N
pn_list = []
for i in range(2, int(math.sqrt(N))+1):
    if num_list[i] == 0:
        pn_list.append(i)
        num_list[i::i] = [1] * len(num_list[i::i])

count = 0
for pn in pn_list:
    e = 1
    while N%(pn**e)==0 and N//(pn**e)>=1:
        N //= (pn**e)
        e += 1
        count += 1
if count == 0:
    count += 1
print(count)
print(count)

import math

N = int(input())
num_list = [0] + [0] * int(math.sqrt(N))  # 0~N
pn_list = []
for i in range(2, int(math.sqrt(N))+1):
    if num_list[i] == 0:
        pn_list.append(i)
        num_list[i::i] = [1] * len(num_list[i::i])

count = 0
for pn in pn_list:
    e = 1
    while N%(pn**e)==0 and N//(pn**e)>=1:
        N //= (pn**e)
        e += 1
        count += 1
if count == 0:  
    count += 1
print(count)
print(count)

import math

N = int(input())
num_list = [0] + [0] * math.sqrt(N)  # 0~sqrt(N)
pn_list = []
for i in range(2, int(math.sqrt(N))+2):
    if num_list[i] == 0:
        pn_list.append(i)
        num_list[i::i] = [1] * len(num_list[i::i])

count = 0
for pn in pn_list:
    e = 1
    while N%(pn**e)==0 and N>=(pn**e):
        N //= (pn**e)
        e += 1
        count += 1
if count==0 and N>1:  
    count += 1
print(count)

N = int(input())

pn_list = [2]
count = 0

e = 1
while N%(2**e) == 0:
  N //= (2**e)
  count += 1
  e += 1
loop_stop = N

for n in range(3, N+1):
  pn_check = True
  for pn in pn_list:
    if n%pn == 0:
      pn_check = False
      break
      
  e = 1
  if pn_check:
    while N%(pn**e) == 0:
      N //= (pn**e)
      count += 1
      e += 1
      loop_stop //= (pn**e)
  if n >= loop_stop:
    print(count)
    exit()
print(count)



import math
 
N = int(input())
num_list = [0] + [0] * int(math.sqrt(N))  # 0~N
pn_list = []
for i in range(2, int(math.sqrt(N))+2):
    if num_list[i] == 0:
        pn_list.append(i)
        num_list[i::i] = [1] * len(num_list[i::i])
        
count = 0
for pn in pn_list:
    e = 1
    while N%(pn**e)==0 and N//(pn**e)>=1:
        N //= (pn**e)
        e += 1
        count += 1
if count == 0 and N>1:
    count += 1
print(count)

N = int(input())

div_counts = []
for i in range(2, int(N**0.5)+1):
  count = 0
  while N%i == 0:
    count += 1
    N //= i
    if N == 1:
      break
  div_counts.append(count)
  
if N != 1:
  div_counts.append(1)
  
ans = 0
for count in div_counts:
  for i in range(1, count):
    if count >= i:
      ans += 1
      count -= i
print(ans)

N = int(input())

div_counts = []
for i in range(2, int(N**0.5)+1):
  count = 0
  while N%i == 0:
    count += 1
    N //= i
    if N == 1:
      break
  div_counts.append(count)
  
if N != 1:
  div_counts.append(1)

ans = 0
for count in div_counts:
  for i in range(1, count+1):
    if count >= i:
      ans += 1
      count -= i
print(ans)

Verdicts: Wrong Answer

Wrong Answer

Runtime Error

Wrong Answer

Runtime Error

Wrong Answer

Accepted