Cách kiểm tra số hoàn hảo trong C#
Trong bài viết này mình sẽ hướng dẫn các bạn cách kiểm tra số hoàn hảo trong C#. Đây là một trong các dạng số đặc biệt trong toán học, hãy cùng mình tìm hiểu về nó trước đã nhé.
Số hoàn hảo là một số nguyên dương lớn hơn 0 và có tổng các ước số (ngoại trừ số đó) bằng chính nó.
Ví dụ:
- Số 6 là số hoản hảo vì ước số của 6 trừ chính nó là 1, 2, 3 và tổng các ước số bằng 6.
- Số 8 không phải là số hoàn hảo vì ước số của 8 trừ chính nó là 1, 2, 4 và tổng các ước số là 7.
Vậy làm thế nào để viết một chương trình kiểm tra một số có phải là số hoàn hảo hay không, hãy cùng mình thực hiện trong ngôn ngữ lập trình C# nhé.
Bài viết này được đăng tại [free tuts .net]
Kiểm tra một số có phải là số hoàn hảo hay không trong C#
Để kiểm tra một số có phải là số hoàn hảo hay không, việc đầu tiên chúng ta cần yêu cầu người dùng nhập vào số cần kiểm tra.
Sau đó sử dụng vòng lặp for để tính tổng các ước số của số a đó (trừ chính nó). So sánh tổng với số a ban đầu, nếu bằng nhau thì là số hoàn hảo, ngược lại thì không phải là số hoàn hảo.
using System; namespace BaiTapCSharp { class Program { static void Main(string[] args) { //khai báo biến a là số cần kiểm tra và sum là tổng các ước số int a, sum = 0; //yêu cầu người dùng nhập vào số cần kiểm tra Console.Write("\n Nhap vao so can kiem tra: "); a = Convert.ToInt32(Console.ReadLine()); //sử dụng vòng lặp for để lặp và tính tỏng các ước số của a //vì ước số trừ chính nó luôn luôn nhỏ hơn 1/2 số đó for(int i = 1; i <= a/2; i++) { if(a % i == 0) { sum += i; } } //sau khi tính tổng, ta so sánh với số a ban đầu //nếu bằng thi đó là số hoàn hảo if(sum == a) { Console.WriteLine("\n {0} la so hoan hao.", a); } //ngược lại không bằng thì không phải là số hoàn hảo else { Console.WriteLine("\n {0} khong phai la so hoan hao.", a); } Console.WriteLine("\n-----Chuong trinh nay duoc dang tai Freetuts.net---"); } } }
Kết quả:
Xuất các số hoàn hảo trong mảng C#
Để xuất các số hoàn hảo có trong một mảng, ta cần tạo một hàm ktraSoHH()
với tham số truyền vào là một số nguyên a. Trong hàm này ta xử lý xem số truyền vào có phải là số hoàn hảo hay không, nếu phải trả về true, ngược lại trả về false.
//Tạo hàm kiểm tra số hoàn hảo với tham số truyền vào là một số nguyen a static bool ktraSoHH(int a) { int sum = 0; for (int i = 1; i <= a / 2; i++) { if (a % i == 0) //tổng các ước số của a sum += i; } if (sum == a) return true; return false; }
Sau đó yêu cầu người dùng nhập vào số lượng phần tử và các giá trị cho phần tử trong mảng. Sử dụng vòng lặp for để lặp và gọi hàm ktraSoHH()
kiểm tra từng phần tử đó. Nếu là số hoàn hảo thì hiển thị ra màn hình, ngược lại thì không hiển thị.
using System; namespace BaiTapCSharp { class Program { //Tạo hàm kiểm tra số hoàn hảo với tham số truyền vào là một số nguyen a static bool ktraSoHH(int a) { int sum = 0; for (int i = 1; i <= a / 2; i++) { if (a % i == 0) //tổng các ước số của a sum += i; } if (sum == a) return true; return false; } static void Main(string[] args) { //khai báo biến n kiểu int là số phần tử của mảng. //sau đó yêu cầu người dùng nhập giá trị cho n Console.Write("\n Nhap vao so phan tu cua mang: "); int n = Convert.ToInt32(Console.ReadLine()); //khai báo một mảng arr kiểu double với số phần tử là n được nhập ở trên int[] arr = new int[n]; //sử dụng vòng lặp for để lặp và yêu cầu người dùng nhập vào từng giá trị cho từng phần tử for (int i = 0; i < arr.Length; i++) { Console.Write(" Nhap vao gia tri cho phan tu thu {0}: ", i + 1); arr[i] = Convert.ToInt32(Console.ReadLine()); } //sử dụng vòng lặp for lặp từng phần tử trong mảng, //mỗi lần lặp ta gọi hàm kiểm tra số ngueyen tố để kiểm tra phần tử đó, nếu là số hoàn hảo thì hiển thị ra màn hình. Console.Write("\n Cac so hoan hao co trong mang la: "); for(int i = 1; i < n; i++) { if (ktraSoHH(arr[i])) { Console.Write(arr[i] + " "); } } Console.WriteLine("\n-----Chuong trinh nay duoc dang tai Freetuts.net---"); } } }
Kết quả: ta sẽ được các số hoản hảo có trong mảng.
Như vậy là chúng ta đã thực hiện xong chương trình kiểm tra một số có phải là số hoàn hảo hay không trong C# và xuất các số hoàn hảo trong mảng. Đây là dạng bài tập cơ bản giúp các bạn rèn luyện tính logic khi viết thuật toán. Hãy luyện tập thật nhiều để sử dụng nó một cách thành thạo nhé, chúc các bạn thành công !!!