3. Dalikliai. 
Šio uždavinio algoritmas aiškus: peržiūrimi visi iš eilės intervalo skaičiai ir randama, kiek tiriamasis skaičius turi daliklių. Po to rastasis daliklių skaičius lyginamas su ankstesnio skaičiaus daliklių kiekiu ir didesnis jų įsimenamas. Taip patikrinami visi intervalo skaičiai. Svarbiausia – sugalvoti, kaip ieškoti daliklių. 
Paprasčiausia: kiekvieną skaičių k paeiliui dalyti iš visų skaičių nuo 1 iki k. Tačiau toks metodas nėra racionalus.
Geresnis būdas – intervalą sumažinti bent perpus, t. y. dalyti iš intervalo [2; k div 2] skaičių, nes intervale [k div 2 + 1; k - 1] skaičius k daliklių neturi. 
Dar greičiau gautume rezultatą, jei skaičiaus k daliklių ieškotume intervale [2;  k]. Imkime bet kurį skaičiaus k daliklį d. Akivaizdu, kad ne tik d, bet ir k div d yra skaičiaus k daliklis. Jei d yra iš intervalo [2; k], tai k div d priklausys intervalui [k; k div d]. Taigi suradę daliklių skaičių intervale [2; k], jų skaičių turėsime padvigubinti. Jei k yra kurio nors skaičiaus kvadratas, daliklių skaičių teks sumažinti vienetu, nes tokiu atveju d = k div d. Kadangi šaknį sveikaisiais skaičiais ištraukti ne taip paprasta, tai patogiau dalyti iki tokio skaičiaus x, kad x2  k.
Algoritmas gana aiškus. Tačiau šis uždavinys ypatingas tuo, kad jo formuluotė nėra išbaigta. Kitaip sakant, reikia patiems patikslinti formuluotę. Juk nėra pasakyta, ar m, n – natūralieji skaičiai, ar jie gali būti ir neigiami. O svarbiausia, nepasakyta, ką daryti, kai aptinkami keli skaičiai, turintys po lygiai daliklių.
Patiksliname formuluotę. Tirsime natūraliųjų skaičių intervalą ir ieškosime tik vieno, tarkim, mažiausio skaičiaus, turinčio daugiausia daliklių.

function daugiausia_daliklių (m, n: integer): integer;
{ randamas mažiausias intervalo [m, n] skaičius, }
{ turintis daugiausia daliklių; m, n – natūralieji skaičiai}
  var d, { kiek daliklių turi tiriamasis skaičius }
      daug, { ieškomas maksimalus daliklių skaičius }
      sk, { ieškomas daugiausia daliklių turintis skaičius }
      i: integer; { intervalo skaičiai }
  function kiek_daliklių (k: integer): integer;
  { kiek daliklių turi skaičius k }
    var d, { daliklis }
        dal: integer; { daliklių skaičius }
  begin
    dal := 0;
    d := 1;
    while d * d < k do
      begin
        if k mod d = 0
           then dal := dal + 2;  { yra du dalikliai: d ir k div d }
        d := d + 1
      end;
    if d * d = k { dar prisidės vienas daliklis }
       then dal := dal + 1;
    kiek_daliklių := dal
  end;
begin { daugiausia }
  daug := dalik(m);
  sk := m;
  for i := m+1 to n do { peržiūrimas visas intervalas }
      begin
        d := dalik(i);
        if d > daug    { jei parašytume , rastume didžiausią }
           then begin  { intervalo skaičių, turintį daugiausia daliklių }
                  daug := d;
                  sk := i
                end
      end;
  daugiausia_daliklių := sk
end;
Galima sugalvoti ir gražesnį šio uždavinio sprendimą. Tarkime, kad skaičiai surašyti paeiliui:
1   2   3   4   5   6   7   8   9   10   11   12   . . .
Kiekvieno skaičiaus daliklių kiekį apskaičiuosime ir pateiksime virš skaičių eilės pavaizduotoje lentelėje šitokiu būdu: pirmiausia virš kiekvieno skaičiaus  (išskyrus vienetą) užrašysime po dvejetą, nes kiekvienas skaičius yra dalus iš 1 ir iš paties savęs.
1	2	2	2	2	2	2	2	2	2	2	2		
1	2	3	4	5	6	7	8	9	10	11	12	…	
Toliau peržiūrėsime skaičius, kurie yra dalūs iš 2. Akivaizdu, kad iš dviejų dalijasi kas antras skaičius, taigi lentelėje kas antro skaičiaus daliklių kiekį padidiname vienetu:

1	2	2	2 + 1	2	2 + 1	2	2 + 1	2	2 + 1	2	2 + 1		
1	2	3	4	5	6	7	8	9	10	11	12	…	
Dabar peržiūrėsime skaičius, kurie dalūs iš 3, taigi kas trečio skaičiaus daliklių kiekį padidiname vienetu:

1	2	2	3	2	3 + 1	2	3	2 + 1	3	2	3 + 1		
1	2	3	4	5	6	7	8	9	10	11	12	…	
Toliau atliekame tą patį su 4, 5, 6 ir t. t.(imame kas ketvirtą, penktą, šeštą ir t. t. skaičių). Koks didžiausias tas kas-kelintas skaičius? Pakanka imti intervalo didesniojo rėžio pusę. Pavyzdžiui, jei n = 100, tai didžiausias skaičius iš kurio dar galima dalyti, yra 100 div 2 = 50. Iš tikrųjų, iš 50 dalysis tik vienas intervalo skaičius: 100. Skaičiaus 50 daliklis 50 jau priskaičiuotas įrašant pirmuosius dvejetus lentelėje (taip pat ir 100 daliklis 100 jau buvo priskaičiuotas). Įsitikinkime, kad iš didesnių negu 50 skaičių dalyti nereikia. Pavyzdžiui, iš 51 dalytųsi tik 51 ir 102. Bet 51 daliklis jau buvo priskaičiuotas, o 102 jau nebepriklauso tiriamam intervalui.
Pasiūlytas algoritmas panašus į Eratosteno rėčio metodą pirminiams skaičiams rasti. Šis algoritmas efektyvesnis už ankstesnįjį, nes nereikia ieškoti visų kiekvieno skaičiaus daliklių. Tačiau reikia masyvo. Skaičių dalikliai kaupiami masyve, kurio indeksai rodo pačius tiriamuosius skaičius. Tarkime, kad n  2000. Jeigu norėtume tirti intervalą su didesniu n, tuomet algoritme reiktų pakeisti konstantą MAX.

const MAX = 2000; { intervalo didžiausias rėžis }
type  dal = array [1..MAX] of integer;  { dalikliams kaupti }

function daug_daliklių (m, n: integer): integer;
  var kiek: dal;      { kiek skaičius turi daliklių }
      max_dal,        { maksimalus daliklių skaičius }
      k,              { skaičių 2, 3, 4, ... kartotiniai }
      sk,             { tiriamas intervalo skaičius }
      rez: integer;
begin
  kiek[1] := 1;
  for sk := 2 to n do { visi skaičiai dalijasi iš }
      kiek[sk] := 2;  { vieneto ir savęs }
  for sk := 2 to n div 2 do
      begin
        k := sk + sk;
        while k <= n do
          begin
            kiek[k] := kiek[k] + 1;
            k := k + sk
          end
      end; { dalikliai surasti: masyvas kiek užpildytas }
  { randamas daliklių maksimumas }
  max_dal := kiek[m];
  rez := m;
  for sk := m+1 to n do
      if kiek[sk] > max_dal
         then begin
                 max_dal := kiek[sk];
                 rez := sk
               end;
  daug_daliklių := rez
end;

Testo nr.	Pradiniai duomenys	Rezultatas	Paaiškinimai	
1	14   14	  14	Intervalą sudaro tik vienas skaičius	
2	 1    1	   1	Vienetas taip pat natūralusis skaičius;	
3	 2    8	   6	Intervale yra du skaičiai (6 ir 8), turintys daugiausia daliklių	
4	 4   12	  12	Daugiausia daliklių (šešis) turi paskutinis intervalo skaičius (12)	
5	13   17	  16	Daugiausia daliklių (penkis) turi skaičius (16), kuris yra kito skaičiaus kvadratas	
6	10 1999	1680	Ilgas intervalas