0

您好,我可以17^1000在 Windows 7 的计算器中进行计算,看起来像

1.2121254521552524e+123(在我看来这是不正确的)

我怎么能用delphi写它,我想用例如1.2121254521552524e+123 mod 181.2121254521552524e+123 mod 100.

另一个例子:17 mod 5 = 2

怎么写,谁能帮帮我?

4

1 回答 1

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.
于 2012-06-20T17:32:41.683 回答