Expert · Number theory · 239 of 264
Prime factors
Write a number as a product of primes, from smallest to largest, like 360 = 2^3 * 3^2 * 5. Numbers go up to 10^11.
Input: n (n >= 2). Output: the factorisation in that form (leave out ^1).
Examples
Input
360
Output
360 = 2^3 * 3^2 * 5
Input
97
Output
97 = 97
Input
1024
Output
1024 = 2^10
2 more tests check other inputs when you press Check.
Stuck? The idea behind number theory
Whole-number tricks: n % d == 0 means d divides n; test divisors only up to the square root; the sieve of Eratosthenes finds every prime up to n at once.
pow(a, b, m) works out a to the power b, modulo m, quickly, even when the power is huge.
n = 50
is_prime = [True] * (n + 1)
is_prime[0] = is_prime[1] = False
for i in range(2, int(n ** 0.5) + 1):
if is_prime[i]:
for j in range(i * i, n + 1, i):
is_prime[j] = False
print(sum(is_prime))Watch for: Testing every number up to n one by one is too slow for big inputs: the hidden tests notice.