"Divisez par $ p ^ 1, p ^ 2, p ^ 3, \ ldots $ et enregistrez le nombre de fissures, Arrêtez d'enregistrer le nombre de fois et divisez autant que vous pouvez diviser par $ p $ " Se répète avec $ p = 2, 3, 5, 7, 9, \ ldots, \ sqrt {N} $. Ajoutez 1 s'il reste des nombres premiers. Comme.
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)
Un peu plus court
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)
Recommended Posts