德尔福的数量巨大

dna*_*naz 4 delphi delphi-7

我正在写一个程序,我将数字乘以5 ...例如:

var
  i:integer;
  k:int64;
begin
  k:=1;
  for i:=1 to 200000000 do
  begin
    k:=5*(k+2);
  end;
  end;
end.
Run Code Online (Sandbox Code Playgroud)

但是当我编译并启动我的程序时,我得到一个溢出整数错误.我怎么解决这个问题?

Pat*_*k87 6

k的正确值至少为5 ^ 20,000,000,或2 ^ 48,000,000.计算机上没有整数类型可以存储它; 这是48,000,000位,大声喊叫.即使你将它存储在二进制文件中,也需要6,000,000字节 - 5.7 MB - 来存储它.你唯一的希望是精确的仲裁库,祝你好运.

你想要计算什么?你现在正在做的是计算一个数字序列(k),其中第i个元素至少与5 ^ i一样大.除非你使用其他类型的变量,否则这将无法达到i = 20,000,000.