gpt4 book ai didi

.net - 执行大量的模数?

转载 作者:行者123 更新时间:2023-12-04 18:00:17 24 4
gpt4 key购买 nike

我需要对非常大的整数进行模数运算。我的平台(编辑:.NET 2.0)支持的最大整数是 64 位整数,对于我正在处理的数字来说不够大。

我怎样才能对真正的大整数做模数,比如 12654875632126424875387321657498462167853687516876876?

我有一个解决方案,可以将数字视为字符串并逐个处理,但我想知道是否有更好的方法。

这是我将数字视为字符串的函数。它基本上像你手工做的那样做长除法。

    Public Function MyMod(ByVal numberString As String, ByVal modby As Integer) As Integer
Dim position As Integer = -1
Dim curSubtraction As Integer = 0

While position < numberString.Length - 1
position += 1
curSubtraction = curSubtraction * 10 + CInt(numberString.Substring(position, 1))

If (curSubtraction / modby) < 1 And position = numberString.Length - 1 Then
Return curSubtraction
ElseIf (curSubtraction / modby) < 1 Then
Continue While
Else
curSubtraction = curSubtraction Mod modby
End If
End While
Return curSubtraction
End Function

有没有更干净、更有效的方法?

编辑:澄清一下,整数来自 IBAN 银行帐号。根据规范,您必须将 IBAN 帐号(包含字母)转换为一个整数。然后,您对整数进行模数运算。所以,我想你可以说执行模数的整数的真正来源是一串数字。

最佳答案

您尚未指定数字的来源,但您可以进行一些简化。如果数字最初较小,请考虑以下事项:

(a + b) MOD n = ((a MOD n) + (b MOD n)) MOD n

或者
ab MOD n = (a MOD n)(b MOD n) MOD n

关于.net - 执行大量的模数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/278440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com