1. Faktorialo skaidymas. 
Iš pirmo žvilgsnio šis algoritmas gali pasirodyti pernelyg paprastas: suskaičiuoji faktorialą ir išskaidai dauginamaisiais. Deja, tai apgaulinga. Jei bandytume skaičiuoti faktorialą ir po to jį išskaidyti pirminiais dauginamaisiais, tai sprendimas būtų visų pirma neefektyvus – sudauginę skaičius, sandaugą vėl dalytume, antra, įvyktų perpildymas, nes faktorialas greitai didėja, nors argumentai ir rezultatai tebūtų maži skaičiai (dviženkliai ir net vienženkliai). Pavyzdžiui, duotas skaičius 9. Jo faktorialas 9! = 362880. Tai viršija maxint. Nors pats rezultatas lygus 13:
9! = 2  3  2  2  5  2  3  7  2  2  2  3  3. 

13

Kiek pagalvoję galime rasti efektyvesnį algoritmą – kai pirminiais daugikliais skaidomi faktorialą sudarantys dauginamieji, o ne pats faktorialas. Belieka pasirinkti skaidymo pirminiais daugikliais būdą. Klasikinis būdas – kai skaidomas skaičius dalijamas iš pirminių skaičių. Tačiau pirminius skaičius gauti nėra lengva, tad darysime paprasčiau: dalysime iš visų skaičių pradedant dvejetu. Beje, dalyti iš kiekvieno skaičiaus reikia tol, kol dalosi be liekanos.
Atkreipiame dėmesį, kad bus dalijama ir iš sudėtinių skaičių, nors skaidomas skaičius iš šių skaičių niekada nesidalys, nes prieš tai jis jau buvo padalytas iš to sudėtinio skaičiaus visų daliklių. 
Pavyzdžiui, panagrinėkime 9!. Jis dalosi be liekanos iš 6. Tačiau pradėję dalyti nuo mažiausio skaičiaus (dvejeto) 9! iš jo dalijame tol, kol dalijasi be liekanos, t. y. 7 kartus. Padaliję gausime 2835. Iš tikrųjų šis skaičius jau nedalus iš 6.
Algoritmas bus efektyvesnis, jeigu skaidomo skaičiaus nedalysime bent iš lyginių sudėtinių skaičių (išskyrus dvejetą, nes jis yra pirminis skaičius).

function kiek (n: integer): integer;
  var k, i: integer;
  function daug (x: integer): integer;
  { kiek pirminių daugiklių turi skaičius x }
    var k, { daugiklių skaičius }
        d: integer; { dalikliai: 3, 5, 7, … }
  begin
    k := 0;
    while x mod 2 = 0 do
      begin           { x dalijasi iš 2 }
        k := k + 1;
        x := x div 2
      end;
    d := 3;
    while d <= x do
      if x mod d = 0  { x dalijasi iš d }
         then begin
                k := k + 1;
                x := x div d
              end
         else d := d + 2;  { imamas kitas nelyginis daliklis }
    daug := k
  end;
begin
  k := 0;
  for i := 1 to n do     { n! = 1 * 2 * 3 * ... * n }
    k := k + daug(i);
  kiek := k
end;

Testo nr.	Pradinis duomuo	Rezultatas	Paaiškinimai	
1	 1	 0	Faktorialas neturi nė vieno pirminio daugiklio	
2	 6	 7	Pradinis duomuo – lyginis skaičius	
3	11	16	Pradinis duomuo – pirminis skaičius	
4	18	32	Atsitiktinis testas	
5	25	47	Atsitiktinis testas	
6	28	55	Faktorialas viršija maxlongint