Voorbeeld in het klein (priemgetallen van 3 cijfers):
Neem priemgetallen p = 631 en q = 863, dus N = p * q = 544553 (6 cijfers).
Nu weet je alleen N = 544553 en je weet dat dit het product is van 2 priemgetallen.
Je wil met alleen deze informatie p en q bepalen.
Dat kan je doen door alle priemgetallen ≤ √N = √544553 = 737.9383... te testen of ze N delen.
Je vindt dan p = 631 waardoor q = N / p = 863.
Neem opnieuw priemgetallen p=631 en q=863, maar werk nu verder met
M = p
5 * q
6 = 41324877086333376958147273127959 (32 cijfers)
Nu weet je alleen deze M en je weet dat dit het product is van machten van 2 priemgetallen.
Je wil met alleen deze informatie p en q bepalen.
Ook hier kan je p bepalen door alle priemgetallen ≤ 737.9383... te testen:
net als bij N, zal p=631 ook M delen.
Dit is evenveel werk als hierboven voor de ontbinding van N.
Deel nu alle factoren p uit M.
Je houdt dan een getal L over dat een onbekende macht van onbekend priemgetal q is: L = q
k.
(in dit voorbeeld is L = 413109111924508609; een getal van 18 cijfers)
Uit L = q
k volgt:
\(\log(L) = \log(q^k) = k \log(q)\)
dus
\(k = \frac{\log(L)}{\log(q)}\)
omdat we de kleinste priemdeler al gevonden hadden (dus p < q is), is
\(k \le \frac{\log(L)}{\log(p)} = \frac{\log(413109111924508609)}{\log(631)} = 6.29...\)
Zoek dan voor k = 6 t/m 2 uit of
\(L^{1/k}\)
een geheel getal q is.
Omdat p en q van dezelfde grootte-orde zijn, is in ons geval k=6 gelijk raak.
Maar ook in het algemeen: het zoeken naar een onbekende priemmacht (zoals we zagen van O(log(L))) is veel sneller dan het zoeken naar p in de ontbinding van N (of M) (dat is van O(√N)).
Dus zowel voor het ontbinden van N als van M wordt de tijdsduur bepaald door √N (een O(√N) algoritme).