Trong phần này, chúng ta sẽ xem cách chúng ta có thể tính tổng tất cả các thừa số nguyên tố lẻ của một số một cách hiệu quả. Có một số n = 1092, ta phải lấy cả thừa số này. Các thừa số nguyên tố của 1092 là 2, 2, 3, 7, 13. Tổng tất cả các thừa số lẻ là 3+7+13 = 23. Để giải quyết vấn đề này, chúng ta phải tuân theo quy tắc này -
Khi một số chia hết cho 2 thì bỏ qua thừa số đó và chia nhiều lần cho 2
Bây giờ số phải là số lẻ. Bây giờ bắt đầu từ 3 đến căn bậc hai của số, nếu số đó chia hết cho giá trị hiện tại thì hãy cộng thừa số với tổng và thay đổi số bằng cách chia cho số hiện tại rồi tiếp tục
Nếu vấn đề thực sự đúng như bạn mô tả, bạn có thể cải thiện hiệu suất theo nhiều cách, chỉ một trong số các cách dưới đây, nhưng trước tiên bạn phải hiểu lý thuyết đằng sau những gì bạn đang cố gắng thực hiện
Số nguyên có số ước lẻ luôn là số chính phương. Cho một số
0, nếu5 1 2 10 100 100 1000 500 2500 1 262144
1 là một ước số thì phải có một số5 1 2 10 100 100 1000 500 2500 1 262144
2 tương ứng sao cho5 1 2 10 100 100 1000 500 2500 1 262144
3 đúng. Họ luôn đi theo cặp. Ngoại lệ là một hình vuông hoàn hảo. Trong trường hợp đó, số của họ có một số ước số5 1 2 10 100 100 1000 500 2500 1 262144
4 sao cho5 1 2 10 100 100 1000 500 2500 1 262144
5 và5 1 2 10 100 100 1000 500 2500 1 262144
4 chỉ được tính là một ước số. Do đó5 1 2 10 100 100 1000 500 2500 1 262144
0 có số ước lẻ5 1 2 10 100 100 1000 500 2500 1 262144
Vậy điều này giúp ích như thế nào? . Nhưng chúng ta vừa chỉ ra rằng chỉ những hình vuông hoàn hảo mới có tính chất như vậy. Vì vậy, những gì câu hỏi đó đang thực sự yêu cầu là
Tìm số bình phương hoàn hảo giữa hai số nguyên
2 và5 1 2 10 100 100 1000 500 2500 1 262144
35 1 2 10 100 100 1000 500 2500 1 262144
Một thuật toán như vậy chỉ đơn giản là thế này
- Bắt đầu với
2 lấy căn bậc hai dấu phẩy động của số kiểm tra5 1 2 10 100 100 1000 500 2500 1 262144
- Bình phương căn sau khi chuyển đổi sang kiểu số nguyên thích hợp
- Nếu bình phương của căn dẫn đến số ban đầu, bạn có một số chính phương. Dừng vòng lặp
- Nếu không, hãy tăng số kiểm tra của bạn và thử lại. Dừng lại nếu bạn vượt qua
3 hoặc tìm thấy một hình vuông hoàn hảo, tùy theo điều kiện nào đến trước5 1 2 10 100 100 1000 500 2500 1 262144
Nếu bạn không tìm thấy hình vuông hoàn hảo, câu trả lời là không và bạn đã hoàn thành. Nếu bạn tìm thấy một hình vuông hoàn hảo, bạn sẽ không cần phải lặp tăng dần trên
2 và5 1 2 10 100 100 1000 500 2500 1 262144
3 nữa. Bạn có một điểm bắt đầu [một căn hoàn hảo], và bây giờ bạn sẽ lặp bằng cách tăng dần căn đó cho đến khi bình phương của nó vượt quá5 1 2 10 100 100 1000 500 2500 1 262144
3. Điều này sẽ làm giảm đáng kể số lần lặp lại5 1 2 10 100 100 1000 500 2500 1 262144
Trong đoạn mã dưới đây
1. số lượng bài kiểm tra1 7 22 28 512
2. số đầu tiên trong một chuỗi thử nghiệm5 1 2 10 100 100 1000 500 2500 1 262144
3. số cuối cùng trong một chuỗi thử nghiệm5 1 2 10 100 100 1000 500 2500 1 262144
0. số lượng các giá trị chia lẻ giữa5 1 2 10 100 100 1000 500 2500 1 262144
2 và bao gồm cả5 1 2 10 100 100 1000 500 2500 1 262144
35 1 2 10 100 100 1000 500 2500 1 262144
7. Căn bậc hai đang chạy của các vòng khám phá của chúng tôi1 7 22 28 512
Mã số
55 1 2 10 100 100 1000 500 2500 1 262144
Đầu vào
5 1 2 10 100 100 1000 500 2500 1 262144
đầu ra
1 7 22 28 512
Màn biểu diễn
Mã này hoạt động tốt], xem xét nó có ít như thế nào. Việc tháo gỡ kết quả bằng cách sử dụng clang 3. 9. 1 với
8 là đáng nể1 7 22 28 512
95 1 2 10 100 100 1000 500 2500 1 262144
Đó là nó. Nó có thể được thực hiện nhanh hơn nữa, nhưng miễn là nó đáp ứng nhu cầu về hiệu suất của bạn, thì có lẽ bạn không cần phải nỗ lực nhiều hơn [vì vậy tôi hy vọng là như vậy] Thông thường các câu hỏi về ước số lẻ cũng yêu cầu một số có giá trị thấp nhất [hoặc cao nhất] . Câu hỏi bạn nêu không hỏi điều đó, và do đó vấn đề giảm xuống rất tốt
Số nào có số ước lẻ?
Số bình phương có số thừa số lẻ. ví dụ. 1, 4, 9, 16, 25, 36,… Nếu nhân một số nguyên với chính nó ta được một số chính phương.Các ước lẻ của 360 là gì?
Giải pháp chi tiết . ∴ tổng tất cả các ước riêng lẻ của 360 là 78. 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 18, 20, 24, 30, 36, 40, 45, 60, 72, 90, 120, 180, 360. ∴ the sum of all odd proper divisors of 360 is 78.- Bắt đầu với