Bạn dường như thiếu một vài điều quan trọng ở đây:
- Có sự khác biệt giữa mẹ đẻ số học và bignum số học.
- Bạn có vẻ quan tâm đến số bignum số học.
- C++ không hỗ trợ bignum số học. Các kiểu dữ liệu nguyên thủy thường là native số học cho bộ xử lý.
Để nhận được số học bignum (tùy ý), bạn cần tự mình thực hiện hoặc sử dụng thư viện. (chẳng hạn như GMP) Không giống như Java và C# (trong số những người khác), C++ không có thư viện cho phép tính số học chính xác tùy ý.
Tất cả những thuật toán ưa thích:
- Karatsuba:
O(n^1.585)
- Toom-Cook:
< O(n^1.465)
- FFT dựa trên:
~ O(n log(n))
chỉ áp dụng đối với bignum số học được thực hiện trong thư viện bignum. Những gì bộ vi xử lý sử dụng cho các phép tính số học bản địa của nó có phần không liên quan vì nó là thường là thời gian không đổi.
Trong mọi trường hợp, tôi không khuyên bạn cố gắng triển khai thư viện bignum. Tôi đã thực hiện nó trước và nó khá đòi hỏi (đặc biệt là toán học). Vì vậy, bạn nên sử dụng thư viện tốt hơn.
Bất kể chip nào cũng vậy. – bmargulies
Tiêu đề khiến tôi nghĩ về số nguyên sao chép :) – harold
@harold Đầu tiên, họ phải làm một cái gì đó gọi là "hẹn hò". – Manish