Kiểm tra số hoàn hảo trong lập trình C/C++ – https://final-blade.com

Thuật toán kiểm tra số hoàn hảo trong C/C++. Ứng dụng vào bài toán tìm, liệt kê số hoàn hảo trong mảng các số nguyên dương n phần tử, số hoàn thiện nhỏ hơn n.

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

Số hoàn hảo (perfect number) hay còn gọi là số hoàn thiện là số: nguyên dương mà tổng các ước nguyên dương chính thức của nó bằng chính nó.
Ước chính thức là các ước mà số đó chia hết trừ nó và bao gồm cả số 1.

Ví dụ số hoàn hảo:

  • 6 là số hoàn hảo, các ước chính thức của 6: 1, 2, 3
    Ta có : 6 = 1 + 2 + 3
  • 28 là số hoàn hảo: 1 + 2 + 4 + 7 + 14 = 28
  • 10 không phải số hoàn hảo: 1+ 2 + 5 = 8 (khác 10)

so hoan hao trong cCông thức tính số hoàn hảoTa sẽ xử lý bài toán vận dụng tư tưởng theo đúng định nghĩa. Để kiếm tra số nguyên dương n có phải là số tuyệt đối hay không, thuật toán đưa ra ở đây chính là duyệt và tìm toàn bộ những ước của n sau đó cộng lại .
Áp dụng vào lập trình ta sẽ xử lý nó như sau :

  • Khai báo một biến tam = 0; biến này sẽ dùng để tính tổng các ước
  • Sử dụng vòng lặp i từ 0 đến nhỏ hơn n. Nếu i là ước của n (tức là n % i ==0) thì ta cộng tam với i : tam = tam + i;
  • So sánh tam với ntam với 0. Nếu tam == ntam !=0 thì tức là số đó là số hoàn hảo, ngược lại thì không.

Sẽ có bạn vướng mắc tại sao ta không xét trường hợp n < 1. Thật ra với cách làm nêu trên, ta cho vòng lặp for từ 0 đến nhỏ hơn n. Vì thế, nếu n nhỏ hơn 1 thì ta luôn thu được tam = 0. mà tam = 0 thì ta đã loại rồi .

2. Kiểm tra số hoàn hảo C/C++

Mình sẽ tiến hành hàm kiểm tra 1 số ít nguyên dương n có phải là số tuyệt vời và hoàn hảo nhất hay không dựa theo đúng ý tưởng sáng tạo nêu ở phần 1 nhé !

Code C/C++:

// Ham kiem tra so hoan hao
bool kt_hoanhao(int n){
	int tam =0;                // Khai báo biến tạm lưu tổng các ước
	for(int i=1; i i là ước chính thức của n
			tam = tam + i;   // cộng vào tổng các ước
	}
	
	if(tam !=0 && tam == n)           // Nếu tổng các ước khác 0 và bằng n trả về true
		return true;
	else                         // Nếu tam khác n hoặc tam ==0 thì trả về false
		return false;
}

Khi có hàm kiểm tra số hoàn thiện, ta hoàn toàn có thể vận dụng vào những bài tập tương ứng. Ví dụ như ( in những số tuyệt vời và hoàn hảo nhất trong mảng, những số ht nhỏ hơn n. .. )
Dưới đây mình tiến hành chương trình in ra tổng thể những số hoàn thiện trong mảng trong C + + nhé !
Code C + + :

#include
using namespace std;

// Ham kiem tra so hoan hao
bool kt_hoanhao(int n){
	int tam =0;
	for(int i=1; i>n;
	cout<<"Nhap mang: "<>a[i];
}

// In so hoan hao trong day
void in_sohoanhao(int a[], int n){
	cout<<"Cac so hoan hao day: ";
	for(int i =0; i

3. Lời kết

Perfect number là một dạng bài tập khá hay, nó giúp bạn hiểu hơn về tư duy lập trình, cách phối hợp vòng lặp, câu điều kiện kèm theo. .. Từ đó giúp bạn cải tổ về kĩ năng của bản thân. Luyện tập từ những thứ nhỏ nhất, bạn sẽ thấy được sự tăng trưởng của mình .

Bài viết của mình đến đây là hết, nếu bạn có lời khuyên gì cho mình hay bất kỳ thắc mắc nào, đừng ngại để lại comment xuống phía dưới bài viết nhé!

Xem thêm các bài viết về thuật toán, lập trình C/C++ khác của mình tại đây.