Cách nhân hai số rất lớn lớn hơn 32 ký tự ví dụ nhân với 100! với 122! hoặc 22^122 với 11^200 bởi sự giúp đỡ của phân chia và chinh phục, làm bất kỳ cơ thể có mã java hoặc mã C#?Nhân nhanh các số nguyên rất lớn
Trả lời
Tôi đã viết một bản thân mình sử dụng Mảng để thực hiện điều đó, chỉ để cho vui. Tôi tin rằng lớp BigInteger của Java cũng vậy.
Here là ví dụ trong C# có thể hữu ích cho bạn.
Here's some integer multiplication algorithms
Here's a class library for numbers
Nó bao gồm các thuật toán Karatsuba và Schonhage-Strassen cho nhân số nguyên lớn.
Có thể bạn nên sử dụng java.math.BigInteger. Điều này cho phép biểu diễn các giá trị số nguyên vượt quá 2^32 hoặc thậm chí 2^64. Giá trị BigInteger về bản chất chỉ giới hạn bởi lượng bộ nhớ có sẵn cho chương trình, tức là ~ 4 GB trên hệ thống 32 bit và bộ nhớ vật lý + virut có sẵn cho hệ thống 64 bit.
import java.math.BigInteger;
class Foo
{
public static void main(String args[])
{
BigInteger bigInteger100Fact = bigFactorial(BigInteger("100")); //where bigFactorial is a user-defined function to calculate a factorial
BigInteger bigIntegerBar = new BigInteger("12390347425734985347537986930458903458");
BigInteger product = bigIntegerFact.multiply(bigIntegerBar);
}
}
EDIT: Dưới đây là một BigInteger factorial function nếu bạn cần một
có, và cho C# xem xét intX, http://www.codeplex.com/IntX/ –
Chỉ cần lưu ý rằng BigInteger đang sử dụng một thuật toán nhân giống ngây thơ vì vậy nếu cần một phép nhân nhanh của số lớn, bạn nên sử dụng thư viện của bên thứ ba sử dụng thuật toán Karatsuba hoặc một thuật toán phụ n^2 khác. – Voo
Here is a patched version của java.lang.BigInteger sử dụng Karatsuba và Toom-Cook:
And here is a Java class rằng có thể nhân BigIntegers sử dụng Schönhage-Strassen:
- 1. Nhân các số nguyên rất dài
- 2. Tính số nguyên rất lớn
- 3. Lưu trữ các số nguyên rất lớn trong MySQL
- 4. Hiệu quả nhân các ma trận rất lớn trong MATLAB
- 5. Echo một số rất lớn
- 6. BigDecimal.movePointRight() treo với số lượng rất lớn
- 7. Tính số mũ rất lớn trong python
- 8. Làm thế nào tôi có thể biểu diễn một số nguyên rất lớn trong .NET?
- 9. Tạo các số nguyên tố lớn thực sự
- 10. Các bảng rất lớn trong SQL Server
- 11. In các bản BigIntegers rất lớn
- 12. Các giao dịch lớn có chi phí hiệu suất/tài nguyên tăng theo cấp số nhân hay theo cấp số nhân không?
- 13. C khởi tạo một mảng số nguyên lớn (rất) với các giá trị tương ứng với chỉ mục
- 14. Hoạt động bitwise với số nguyên lớn
- 15. literals số nguyên âm lớn
- 16. Số nguyên lớn trong C#
- 17. Chuẩn cho sin có số lượng rất lớn
- 18. Quicksort sắp xếp các số lớn hơn nhanh hơn?
- 19. Đọc các tệp rất lớn trong PHP
- 20. Phép nhân và phép trừ nhanh modulo một số nguyên tố
- 21. Số nguyên cực kỳ lớn trong PHP
- 22. MIPS: Nhân số nguyên và phân chia
- 23. getThreads của nhãn rất lớn
- 24. Cách nhân thời lượng theo số nguyên?
- 25. Sàng số nguyên tố nhanh trong Python
- 26. Số học với số nguyên lớn tự do trong PHP
- 27. Trường số nguyên lớn trong các kiểu django
- 28. Javascript cách tổng hợp các số nguyên lớn
- 29. Các số nguyên lớn tùy ý trong C#
- 30. WPF: Làm thế nào để tải rất nhiều hình ảnh lớn nhanh chóng vào wrappanel?
gắn thẻ lại với các ngôn ngữ có liên quan –
Đọc về thuật toán nhân: http://en.wikipedia.org/wiki/Multiplication_algorithm – przemoc
"phân chia và chinh phục" các âm thanh như người chủ k. Vui lòng gắn lại nếu đúng. –