您好,我可以17^1000
在 Windows 7 的计算器中进行计算,看起来像
1.2121254521552524e+123
(在我看来这是不正确的)
我怎么能用delphi写它,我想用例如1.2121254521552524e+123 mod 18
或1.2121254521552524e+123 mod 100
.
另一个例子:17 mod 5 = 2
怎么写,谁能帮帮我?
您将需要使用某种扩展精度类型。这种类型不会是原始类型,您需要使用现有类型或编写自己的类型(这将是大量工作,并且是重新发明轮子的经典案例)。Java 可能是一种更好的语言,因为它的系统库包括 BigInteger 和 BigDecimal 类,它们可以处理您需要的功能。
编辑:这里有一些提供大整数和高精度浮点运算的delphi库:http: //www.delphiforfun.org/programs/Library/big_integers.htm
也就是说,如果您发现自己无法使用 windows 计算器来完成您正在寻找的东西,并且您只需要它来完成一两件事,请考虑使用更强大的在线服务,例如 WolframAlpha。
另外,如果您仍然没有答案:
17^1000 mod 18 == 1
17^1000 mod 100 == 1
用于计算此类数字的算法很简单,不需要大整数支持。考虑以下伪代码:
modular_exponentiation (base, exponent, modulus):
let value = 1
let c_exponent = 0
for c_exponent less than exponent:
let value = value * base
if value greater than or equal to modulus:
let value = (value) mod (modulus)
increment c_exponent
value.