我想获得目标可分割的数字量。 所以在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;
答案 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;