“Số hoàn hảo/hoàn thiện”, đối với một sinh viên mới nhập học môn lập trình căn bản thì cụm danh từ này có thể là một điều gì đó khá xa lạ và mơ hồ với các bạn. Hôm nay, DTH Share, sẽ trình bày cho các bạn biết rằng “Số hoàn hảo là gì?” và  chia sẻ code tham khảo “Viết hàm xác định số hoàn hảo trong C#

số hoàn hảo, số hoàn hảo là gì, hàm tìm số hoàn hảo, hàm kiểm tra số hoàn hảo,

Số hoàn hảo là gì?

Số hoàn hảo hay còn được gọi số hoàn thiện, là một số nguyên dương và có tổng các ước số (không tính chính nó) bằng với chính nó.

Số hoàn thiện nhỏ nhất là 6, tổng các ước số 1,2 và 3 là bằng 6 và bằng chính nó. Các số hoàn thiện còn lại bao gồm: 28,496 và 8128,….

[Chia sẻ code] Viết hàm xác định số hoàn hảo trong C#

Để dễ hình dung một cách rõ ràng nhất, ta sẽ tiến hành phân tích và làm bài tập nhỏ:

Đề bài

Kiểm tra số được nhập vào (n), có phải là số hoàn thiện/hoàn hảo hay không?

Bài tập này, cùng với các bài như “xuất hình tam giác đều, Xuất hình tam giác vuông” là một trong những bài tập căn bản mà tại nhiều trường đều cho các bạn sinh viên học lập trình căn bản làm bài tập này.

Các bạn có thể dùng code này để tham khảo và cải tiến thêm.

Phân tích đề bài và chuẩn bị project

Dựa trên định nghĩa về số hoàn thiện, ta có thể phân tích rằng, tổng các ước số của số cần kiểm tra nếu bằng với chính nó, thì đây chính là số hoàn thiện.

Vậy việc ta cần làm là đi tìm những ước số của chính số cần kiểm tra, tính tổng của các con số đó và xem rằng tổng của các ước số có bằng với chính nó không.

Đầu tiên, hãy tạo một project C# và đặt tên là perfect_number. Và hãy để visual tự động import các thư viện cần thiết vào.

Kế tiếp, để tránh làm cho hàm Main bị rối, hãy tạo một hàm khác và đặt tên nó là “is_perfect_number“. Hãy để hàm này trả về kiểu bool. Và tham biến n là số cần kiểm tra.

Ta đặt hàm trong try-catch để tránh các trường hợp sai sót ngoài ý muốn, và ta sẽ cho “catch” return false.

Cài đặt thuật toán kiểm tra số hoàn hảo

Bây giờ, ta có thể tiến hành viết code để kiểm tra số được nhập vào có phải số hoàn hảo hay không. Với những gì ta đã phân tích ở trên, ta cần một biến để chứa tổng của các ước số.

Giờ, ta cần đi tìm các ước số của số được người dùng nhập vào. Hãy cho vòng for chạy từ  1 cho đến chính nó. Và dùng if để kiểm tra tìm ra các ước số của số cần kiểm tra.

Nếu đó là ước số của số cần kiểm tra, ta tiến hành cộng dồn số đó vào cho biến _total.

** ước số, là những con số mà số cần kiểm tra có thể chia hết.

Cuối cùng, ta sẽ kiểm tra xem, _total (tổng các ước số) và n (số cần kiểm tra) xem 2 số có bằng nhau không. Nếu như bằng ta sẽ return true, và ngược lại sẽ return false.

Ta có thể thêm vào cho người dùng nhập vào một con số bất kì và sau đó ta nhận kết quả từ hàm is_perfect_number để xuất ra cho người dùng biết, đây có phải là số hoàn hảo hay không.

Demo

Ta nhập 6 vào ta thấy rằng đây chính là một số hoàn thiện, vậy nếu ta nhập 10 hay 21 vào, liệu đây có phải một số hoàn thiện. Các bạn hãy cho mình biết kết quả dưới comment nha.

Full source code

link Git: https://github.com/dthshare2017/perfect_number

 

Cùng với các bài chia sẻ code khác, cuối bài, chúng mình luôn để full source code và link Git chứa source code mà các bạn có thể clone về để sử dụng cho việc tham khảo. Hãy tiếp tục theo dõi và xem các bài chia sẻ code của DTH Share nha mọi người.

1 COMMENT

  1. Bài viết rất cụ thể, rõ ràng. Cảm ơn anh đã chia sẻ kiến thức nhé.

LEAVE A REPLY

Please enter your comment!
Please enter your name here