Advertisement
mixster

mixster

Sep 19th, 2009
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 0.92 KB | None | 0 0
  1. function Divisors(num, n: Integer): Integer;
  2. var
  3.   a: array of Integer;
  4.   h, i, t: Integer;
  5. begin
  6.  
  7.   h := Trunc(sqrt(num));
  8.   SetLength(a, h * 2);
  9.  
  10.   t := 0;
  11.   for i := 1 to h do
  12.   begin
  13.     if (num mod i = 0) then
  14.     begin
  15.       a[t] := i;
  16.       a[t + 1] := num div i;
  17.       t := t + 2;
  18.     end
  19.   end;
  20.  
  21.   if (h * h = num) then
  22.     t := t - 1;
  23.  
  24.   SetLength(a, t);
  25.   BubbleSort(a);
  26.   //ClearSameIntegers(a);
  27.   //t := High(a);
  28.   t := t - 1;
  29.  
  30.   case n of
  31.     0: begin
  32.       Result := t + 1;
  33.       exit;
  34.     end;
  35.     2: begin
  36.       SetLength(a, t);
  37.       t := t - 1;
  38.     end;
  39.   end;
  40.  
  41.   h := 0;
  42.   for i := 0 to t do
  43.     h := h + a[i];
  44.    
  45.   Result := h;
  46. end;
  47.  
  48. var
  49.   i: Integer;
  50. begin
  51.   Writeln('Begin');
  52.  
  53.   for i := 1 to 10 do
  54.     Writeln(IntToStr(i) + ': ' + IntToStr(Divisors(i, 0)) + '; ' + IntToStr(Divisors(i, 1)) + '; ' + IntToStr(Divisors(i, 2)) + '.');
  55.  
  56.   Writeln('End');
  57. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement