Мне нужно выполнить операцию модуля на очень больших целых числах. Самое большое целое число, поддерживаемое моей платформой (версия .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
Есть ли более чистый, более эффективный способ?
EDIT: Чтобы уточнить, целые числа поступают из номеров банковских счетов IBAN. Согласно спецификации, вам необходимо преобразовать номер счета IBAN (содержащий буквы) в одно целое. Затем вы выполняете модуль на целое число. Итак, я думаю, вы могли бы сказать, что реальный источник целого числа для выполнения модуля on - это строка цифр.
На каком языке это? Возможно, вы захотите добавить тег. – billjamesdev
Было бы также полезно включить пример. У вас есть решение огромного числа в вашем модуле вопросов по какой-то другой ценности? –