Tôi cần phải tìm số chữ số của các phép nhân rất lớn (khoảng 300 chữ số mỗi số). Tôi đã tự hỏi nếu có một mẹo để dự đoán số chữ số mà sản phẩm sẽ không thực sự thực hiện phép tính.Dự đoán số chữ số của một phép nhân
Trả lời
Số chữ số có thể được tính chính xác bởi tròn (giảm) tổng các base 10 log của hai multiplicands cộng 1 như sau:
public static void main(String[] args) {
DecimalFormat f = new DecimalFormat("#");
double num1 = 123456789d;
double num2 = 314159265358979d;
// Here's the line that does the work:
int numberOfDigits = (int) (Math.log10(num1) + Math.log10(num2)) + 1;
System.out.println(f.format(num1) + " * " + f.format(num2) + " = " +
f.format((num1 * num2)) + ", which has " + numberOfDigits + " digits");
}
Output:
123456789* 314159265358979 = 3878509413969699000000000000000000, which has 34 digits
Điều này sẽ làm việc cho số lượng lớn tùy ý.
Điều này tốt hơn rất nhiều so với câu trả lời của tôi :) – Tom
cảm ơn tất cả mọi người vì phản hồi của bạn, nhưng cái này lấy bánh. cảm ơn. – Deho
Tất nhiên, nó chỉ là 'log10' nếu chúng ta muốn số * chữ số thập phân *. Nói chung, nó là 'log_k' nếu chúng ta muốn các chữ số trong hệ thống vị trí cơ sở-k. –
Câu trả lời của Cristobalito nhận được khá nhiều. Hãy để tôi làm cho "chính xác" chính xác hơn:
Giả sử số đầu tiên có chữ số n và số thứ hai có m. Mức thấp nhất có thể là 10^(n-1) và 10^(m-1) tương ứng. Sản phẩm đó sẽ thấp nhất có thể, và sẽ là 10^(m + n-2), đó là m + n-1 chữ số.
Mức cao nhất có thể là 10^n - 1 và 10^m - 1 tương ứng. Sản phẩm đó sẽ cao nhất có thể và sẽ là 10^(n + m) - 10^n - 10^m + 1, có nhiều nhất là chữ số m + n.
Vì vậy, nếu bạn đang nhân một số có chữ số n bằng số có chữ số m, sản phẩm sẽ có chữ số m + n-1 hoặc m + n.
Logic tương tự giữ cho các cơ sở khác, chẳng hạn như cơ số 2.
Lôgarit cơ sở 10, mà các áp phích khác mô tả, là một kỹ thuật đơn giản. Tuy nhiên, bạn chỉ có thể tìm logarit cơ sở 2 và nhân với (log 2)/(log 10), khoảng 0,693. Lôgarit cơ số 2 có thể được tìm thấy mà không cần đến điểm nổi bằng cách chỉ tìm vị trí quan trọng nhất 1 trong biểu diễn nhị phân. Nếu sau đó bạn nhân với 69 và số nguyên chia cho 100, bạn nên tìm số chữ số gần đúng mà không bao giờ sử dụng bất kỳ thứ gì trừ hoạt động số nguyên. Bạn có lẽ không bao giờ nên làm điều này, vì nó có lẽ sẽ không bao giờ thực sự đáng giá. Dễ thương, mặc dù, không? –
Tại sao không thêm nhận xét của bạn ở đây vào câu trả lời? –
Bởi vì tôi tin rằng nó không thực sự hữu ích trong thực tế. –
- 1. Dự đoán dài hạn sử dụng mạng nơron nhân tạo
- 2. Lấy số chữ số trong một số
- 3. PHP preg_match - chỉ cho phép chuỗi chữ và số và - _ nhân vật
- 4. Tìm chỉ số của một nhân vật trong một chuỗi
- 5. Chữ số của Giáo hội: cách mã hóa số không trong phép tính lambda?
- 6. Phép nhân và phép trừ nhanh modulo một số nguyên tố
- 7. Return 2 chữ số cuối một số
- 8. regex: tìm số có một chữ số
- 9. R: phép nhân đơn giản gây ra tràn số nguyên
- 10. Lập trình R: dự đoán(), "dự đoán" và "tin cậy"?
- 11. phát hiện phép nhân uint64_t số nguyên tràn với C
- 12. loop tiling/blocking cho phép nhân số lớn dày đặc
- 13. R: số 'envir' arg không có độ dài một dự đoán()
- 14. Thuật toán dự đoán từ
- 15. Dự đoán tràn giai thừa
- 16. Cho phép chỉ chữ và số giá trị
- 17. Dự đoán SIFT
- 18. Silverlight: Cách dự đoán kích thước chuỗi?
- 19. Đối số dòng lệnh Java. Sử dụng * làm đối số cho phép nhân
- 20. Regex cho phép chữ và số, -, _ và không gian
- 21. ULL hậu tố vào một số chữ
- 22. Python - số chữ số trong số mũ
- 23. Xác thực số điện thoại jQuery cho phép các khoảng trắng, tối thiểu 8 chữ số
- 24. Nhân hai số int dài dài C
- 25. Cụm từ thông dụng để cho phép các giá trị số từ 1-3 chữ số?
- 26. Cách chẩn đoán nhân viên Celery treo
- 27. Cảnh báo: mysqli_error() dự đoán chính xác 1 tham số, 0 lỗi cho
- 28. chia một ký tự từ một số có nhiều chữ số
- 29. Tạo số nhị phân của n chữ số trong clojure
- 30. Làm thế nào để dự đoán thủy triều bằng cách sử dụng hằng số hài hòa
Thông thường về 2 * n, trong đó n là số chữ số. – cristobalito
Bạn có thể giới hạn số chữ số như sau: 'sàn (log x) * sàn (log y) <= chữ số (x * y) <= ceil (log x) * ceil (log y)' log base 10. – davin
@critobalito nó nhiều hơn n + m trong đó n và m là số chữ số của mỗi biểu thức. ví dụ. '9 * 9 = 81'' 999 * 9 = 8991' – Lynch