Naives Faktorisierungsverfahren
Ein naiver (exponentieller) Ansatz zur Faktorisierung von einer Zahl in ein Produkt aus Primzahlen.
Python Implementierung
def naive_factorization(n):
# First count number of times n is divisible by 2
if n % 2 == 0:
e = 1
n = n / 2
while n % 2 == 0:
e += 1
n = n / 2
yield {2: e}
# Then start with bases bigger than 2
p = 3
while p**2 <= n: # Test if p <= sqrt(n)
if n % p == 0:
e = 1
n = n / p
# count number of times divisible by p
while n % p == 0:
e += 1
n = n / p
yield {p: e}
p = p + 2
# If n is not 1, then n is prime
if n > 1:
yield n
list(naive_factorization(12))```
Induziert einen Primzahlbeweis. Wenn man keinen Teiler $t\leq\sqrt{n}$ findet, dann ist $n$ [[Primzahl]].
## [[Laufzeit]]
$$\mathcal{O}(\sqrt{n}\ln^2{n})$$
und damit exponentiell.