Logic số hoàn hảo trong Python là gì?

Số hoàn hảo trong python được định nghĩa là một triển khai được xây dựng trong python trong đó số được yêu cầu để tìm kiếm số hoàn hảo được chia thành các thừa số, sau đó các thừa số được cộng lại ngoại trừ chính số thực và sau đó kiểm tra xem tổng của . Nếu tổng bằng số thực thì số đó được gọi là số hoàn hảo. Khái niệm về số hoàn hảo có từ đầu năm 300 trước Công nguyên trong thời đại của Euclid và khái niệm này xuất phát từ số học Hy Lạp. Trong bài viết này, chúng ta sẽ hiểu cách triển khai các số hoàn hảo trong python và cũng hiểu một chút toán học đằng sau logic của một số là một số hoàn hảo. Chúng ta cũng sẽ hiểu mã giả trong python trước khi chuyển sang thể loại mã hóa số hoàn hảo

Gói phát triển phần mềm tất cả trong một[hơn 600 khóa học, hơn 50 dự án]

Giá bán
Xem các khóa học

Hơn 600 khóa học trực tuyến. hơn 50 dự án. Hơn 3000 giờ. Giấy chứng nhận có thể kiểm chứng. Truy cập trọn đời
4. 6 [85.265 xếp hạng]

Logic đằng sau Số hoàn hảo

Bắt đầu khóa học phát triển phần mềm miễn phí của bạn

Phát triển web, ngôn ngữ lập trình, kiểm thử phần mềm và những thứ khác

Trong phần này, chúng ta sẽ cố gắng hiểu logic đằng sau một số được xét là số hoàn hảo cả về mặt toán học và xem xét mã giả của việc xét một số là số hoàn hảo. Vì vậy, trước tiên hãy bắt đầu xem xét nó về mặt toán học

Euclid, vào năm 300 trước Công nguyên, đã chứng minh rằng bất kỳ số nào có dạng 2P−1[2P − 1] được gọi là số hoàn hảo nếu thừa số [2P − 1] là một số nguyên tố. Trong dãy số, 6 là số hoàn thiện nhỏ nhất. Hãy để chúng tôi xem làm thế nào. Với P = 2, giá trị của 2P−1[2P − 1] là 6 và [2P − 1] với P=2 là 3. Hãy để chúng tôi xem điều tương tự một cách hợp lý. Các ước của 6 là 1, 2, 3 và 6. Bây giờ, theo quy tắc, nếu chúng ta bỏ qua chính số đó, chúng ta còn lại các ước 1, 2 và 3. Bây giờ, chúng ta hãy tìm tổng của 3 ước. 1 + 2 + 3 = 6. Tổng bằng chính số ban đầu nên 6 là số hoàn hảo. Cũng giống như câu đố, nếu tổng các ước nhỏ hơn số ban đầu, chúng được gọi là thiếu và nếu tổng lớn hơn chính số đó, số đó được gọi là thừa. Ví dụ: các ước của 8 là 1, 2, 4 và 8 và tổng của 1, 2 và 4 là 7. Vậy 8 là số còn thiếu. Ví dụ: các ước của số 40 là 1, 2, 4, 5, 8, 10, 20 và 40. Tổng của tất cả các ước trừ chính số đó là 50 và do đó 40 là số dư. Quay trở lại chủ đề từ câu đố, người ta sẽ lập luận rằng với P = 4, chúng ta có giá trị là 2P−1[2P − 1] = 120, nhưng 120 không hoàn hảo và đó chỉ là vì [2P − 1] =

Trước khi chuyển sang tìm hiểu logic của các số hoàn hảo theo mã thông minh, chúng ta muốn biết liệu có tồn tại các số hoàn hảo vô hạn hay không. Thực tế mà nói, có thể có hoặc có thể không giống như câu hỏi này vẫn là một bí ẩn chưa có lời giải trong thế giới các bài toán. Giờ đây, bất kỳ việc giải quyết vấn đề nào cũng có thể được thực hiện theo nhiều cách và ở đây chúng ta sẽ xem xét 2 loại giải pháp, một là giải pháp đơn giản và giải pháp kia là giải pháp hiệu quả. Vì vậy, chúng ta hãy bắt đầu với một giải pháp đơn giản. Theo trực giác, người ta có thể chỉ định một bộ đếm sẽ đi từ 1 đến số nhỏ hơn chính số đó và kiểm tra xem số đó có chia hết cho bộ đếm hay không. Nếu có, thì chúng tôi cộng nó vào tổng, còn nếu không, chúng tôi không làm gì cả. Cuối cùng, chúng tôi kiểm tra xem tổng có bằng số không và nếu bằng thì chúng tôi trả về số đó là số hoàn hảo; . Đây có vẻ là một phương pháp không hiệu quả vì nếu số lượng lớn, thời gian thực hiện cũng sẽ tăng lên

Để có một giải pháp hiệu quả, chúng ta có thể giảm độ dài vòng lặp for phải đi qua bằng cách đi đến căn bậc hai của số thay vì số và nếu bộ đếm đi từ 1 đến căn bậc hai của số trở thành một thừa số, chúng ta . Bằng cách này, chúng ta sẽ không phải duyệt qua toàn bộ chiều dài của mảng và chỉ dừng lại ở độ dài bằng căn bậc hai của số

Làm cách nào để kiểm tra số hoàn hảo trong Python?

Trong phần này, chúng ta sẽ xem xét quy trình của thuật toán tìm số hoàn hảo, sau đó là một ví dụ chúng ta sẽ xem xét việc triển khai quy trình trong python

Đối với giải pháp đơn giản

1. Lấy số đầu vào từ người dùng
2. Khai báo tổng = 0;
3. Chạy vòng lặp for bằng bộ đếm biến tạm thời từ 1 đến đầu vào – 1
4. Kiểm tra xem số đó có chia hết cho bộ đếm không
5. Nếu nó chia, hãy thêm bộ đếm vào tổng
6. Nếu không, sau đó không làm gì cả
7. Cuối cùng, ra khỏi vòng lặp for, hãy kiểm tra xem số = tổng mà chúng ta thu được từ vòng lặp trước đó hay không và nếu nó bằng nhau, hãy trả về số hoàn hảo, ngược lại trả về số không hoàn hảo

Để có giải pháp hiệu quả

1. Lấy số đầu vào từ người dùng
2. Khai báo tổng = 1;
3. Chạy vòng lặp while sử dụng biến tạm thời counter từ 2 và chạy vòng lặp cho đến khi counter*counter

Chủ Đề