我在Pascal中使用此库用于Big Integers但我在使用modulo
函数时遇到问题。有人可以帮忙吗?
我的代码:
a = b modulo(c);
这是图书馆的位置:http://www.delphiforfun.org/programs/library/big_integers.htm
{ ***************** Modulo ************* }
procedure TInteger.Modulo(const I2: TInteger);
{ Modulo (remainder after division) - by TInteger }
var
k: int64;
imod3: TInteger;
begin
if high(I2.fDigits) = 0 then begin
divmodsmall(I2.Sign * I2.fDigits[0], k);
assignsmall(k);
end
else
begin
imod3:= GetNextScratchPad;
DivideRem(I2, imod3);
Assign(imod3);
ReleaseScratchPad(imod3);
end;
end;
为什么这不起作用?: 也为什么这不起作用?:
var
P, Q, N, E, D,i: TInteger;
Eing, Cout: TInteger;
begin
E := 3;
D := 27;
N := 55;
writeln(N.Modulo(E));
答案 0 :(得分:3)
您下载的源代码附带了如何使用模数函数的示例。我建议你花时间阅读库附带的示例代码。如果你这样做,那么你就能够自己解决更多的问题。示例代码如下所示:
procedure Tbigints.ModBtnClick(Sender: TObject);
var
i1,i2,i3:Tinteger;
begin
i1:=TInteger.create(0);
i2:=TInteger.create(0);
Getxy(i1,i2);
i1.modulo(i2);
memo1.text:=i1.converttoDecimalString(true);
i1.free;
i2.free;
alloclbl.caption:=format('Allocated memory: %d',[allocmemsize]);
end;
关键是modulo
方法的作用。在上面的代码中,红利保存在i1
中,除数保存在i2
中。然后,您在modulo
上调用i1
作为参数传递i2
。然后将操作结果放在i1
中。因此,这种方法用除法模数代替被除数。