德尔福 - 获取可分数的数量

时间:2014-05-20 21:45:01

标签: delphi math numbers pascal divide

我想获得目标可分割的数字量。 所以在10的情况下它应该返回4,因为10可以被1,2,5和10整除。 我的尝试是这样,但它返回1? O.o

function FindeTeiler(Zahl : Integer) : Integer;
var
Amount, i: Integer;
begin
  Amount := 0;
   For i := 1 to Zahl do begin
      If (i mod zahl = 0) then
      begin
        Amount := Amount +1;
      end;
   end;
   Result := Amount;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
Showmessage('The number ' + Edit1.text + ' has ' + IntToStr(FindeTeiler(StrToInt(Edit1.text))) + ' dividers.');
end;

1 个答案:

答案 0 :(得分:1)

您需要计算zahl / i的剩余部分,但您的代码会计算i / zahl的剩余部分。

所以,而不是

i mod zahl = 0 

你需要测试

zahl mod i = 0

该函数应该这样写:

function FindeTeiler(Zahl: Integer): Integer;
var
  i: Integer;
begin
  Result := 0;
  for i := 1 to Zahl do
    if zahl mod i = 0 then
      inc(Result);
end;