"Teilen Sie durch $ p ^ 1, p ^ 2, p ^ 3, \ ldots $ und notieren Sie die Anzahl der Risse. Stoppen Sie die Aufzeichnung der Häufigkeit und teilen Sie so viel wie möglich durch $ p $ " Wird mit $ p = 2, 3, 5, 7, 9, \ ldots, \ sqrt {N} $ wiederholt. Addiere 1, wenn noch Primzahlen übrig sind. Mögen.
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)
Ein bisschen kürzer
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