您好我可以在Windows 7的计算器中计算17^1000
,它看起来像
1.2121254521552524e+123
(我认为这不正确)
我怎样才能在delphi中编写它,我想用例如1.2121254521552524e+123 mod 18
或1.2121254521552524e+123 mod 100
。
另一个例子:17 mod 5 = 2
如果有人帮助我怎么写呢?
答案 0 :(得分:3)
您需要使用某种扩展精度类型。这样的类型不是原始类型,你需要使用现有的类型或编写自己的类型(这将是一项大量的工作,以及重新发明轮子的经典案例)。 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.