Tôi cần thực hiện thao tác mô đun trên các số nguyên rất lớn. Số nguyên lớn nhất được hỗ trợ bởi nền tảng của tôi (chỉnh sửa: .NET 2.0) là một số nguyên 64 bit, không đủ lớn cho các số tôi đang làm việc.Thực hiện mô đun trong một số lượng lớn?
Làm cách nào để tạo mô đun trên các số nguyên thực sự lớn, như 12654875632126424875387321657498462167853687516876876?
Tôi có một giải pháp xử lý số dưới dạng chuỗi và hoạt động theo từng phần, nhưng tôi muốn biết liệu có cách nào tốt hơn không.
Đây là chức năng của tôi xử lý số dưới dạng chuỗi. Về cơ bản nó phân chia dài cách bạn làm bằng tay.
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
Có cách nào sạch hơn, hiệu quả hơn không?
EDIT: Để làm rõ, các số nguyên đến từ số tài khoản ngân hàng IBAN. Theo đặc điểm kỹ thuật, bạn phải chuyển đổi số tài khoản IBAN (chứa các chữ cái) thành một số nguyên. Sau đó, bạn làm một mô đun trên số nguyên. Vì vậy, tôi đoán bạn có thể nói rằng nguồn thực sự của số nguyên để thực hiện mô đun trên là một chuỗi các chữ số.
Ngôn ngữ này là gì? Bạn có thể muốn thêm thẻ. – billjamesdev
Cũng sẽ hữu ích khi đưa vào một ví dụ. Bạn có giải pháp cho số lượng lớn trong câu hỏi của bạn mod bởi một số giá trị khác? –