Mã c ++ số hoàn hảo

Số hoàn hảo trong toán học là số nguyên dương có tổng các ước dương của nó không kể số ban đầu

Chẳng hạn, số nguyên dương 6 chia hết cho các số 1, 2 và 3. Mặc dù chúng tôi biết rằng số đó cũng chia hết, tuy nhiên chúng tôi sẽ thêm nó vào danh sách các ước. Các ước này (1 + 2 + 3 = 6) khi cộng lại sẽ được 6, bằng với số chúng ta đang xét. Vậy 6 là số hoàn hảo

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

Tổng các ước dương thích hợp của một số hoàn hảo, ngoại trừ chính số đó, là một số nguyên dương. Đây là hình minh họa,
Đầu vào. n = 6
Các ước riêng của 6 là 1, 2, 3
Tổng các ước riêng của 6 = 1 + 2 + 3 = 6
Hence 6 is a perfect number.

Thuật toán tìm số hoàn hảo

  • Yêu cầu một số nguyên từ người dùng
  • Để giữ tổng các ước số dương chính xác, hãy khởi tạo một biến khác bằng 0
  • Từ 1 đến n/2, duyệt qua từng số nguyên và xem nó có phải là số chia không. Theo dõi tổng của tất cả các ước số. Số sẽ là số hoàn hảo nếu tổng bằng n;

Chương Trình Tìm Số Hoàn Thiện Trong C

Có 3 cách tìm số hoàn thiện trong C

  • Sử dụng cho vòng lặp
  • Sử dụng Vòng lặp While
  • Sử dụng đệ quy trong C

Phương pháp 1. Sử dụng cho vòng lặp

Trong phương pháp này, chúng tôi sẽ viết một chương trình c chấp nhận đầu vào số nguyên từ người dùng và kiểm tra xem số đã cho có phải là số hoàn hảo hay không

#include 
int main ()
{
    int num = 28, sum = 0;
    // iteratively check for all numbers in range [1, 27]
    for(int i = 1; i < num; i++){
        // check if i is a divisor, if yes then add to sum
        if(num % i == 0)
            sum = sum + i;
    }    
    if(sum == num)
        printf("%d is a perfect number",num);
    else
        printf("%d is not a perfect number",num);
}

Giải trình. Trong ví dụ đã cho, hàm PerfectNum thực hiện phép tính và trả về tổng. Trong vòng lặp, có một điều kiện kiểm tra xem tổng có bằng số hay không, và theo đó, câu lệnh in được thực hiện

Mã kiểm tra số hoàn hảo trong C/C++. Ứng dụng vào bài toán tìm kiế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

Mục lục bài viết

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

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

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

  • 6 is a number of perfect, các công thức chính thức của 6. 1, 2, 3
    Ta có. 6 = 1 + 2 + 3
  • 28 is perfect number. 1 + 2 + 4 + 7 + 14 = 28
  • 10 not perfect number. 1+ 2 + 5 = 8 (khác 10)

Mã c ++ số hoàn hảo
Continuity Formula

Ta sẽ giải bài toán ứng dụng tư tưởng theo đúng định nghĩa. Để tìm kiếm tra cứu số nguyên dương n phải là số hoàn hảo hay không, thuật toán đưa ra ở đây chính là duyệt và tìm tất cả các ước tính của n sau đó cộng lại

Áp dụng vào trình cài đặt ta sẽ giải quyết nó như sau

  • Khai báo một tam biến = 0;
  • Vòng lặp sử dụng tô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 n và tam với 0. If tam == n and tam. =0 thì tức là số đó là số hoàn hảo, ngược lại thì không

Bạn có thắc mắc tại sao ta không xét trường hợp n < 1. Thật ra với cách nêu trên, ta cho vòng lặp 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. Check the perfect number C/C++

Mình sẽ phát triển khai hàm kiểm tra một số nguyên dương n phải là số hoàn hảo hay không dựa theo đúng ý tưởng nêu ở phần 1 nhé

Mã 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ó chức năng kiểm tra số hoàn thiện, ta có thể áp dụng vào các bài tập tương ứng. Ví dụ như (trong các số hoàn hảo trong mảng, các số ht nhỏ hơn n. . . )

Dưới đây mình đang khai thác chương trình trong ra tất cả các số hoàn thiện trong mảng trong C++ nhé

Mã 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

Số hoàn hảo là một dạng bài tập khá hay, nó giúp bạn hiểu rõ hơn về tư duy lập trình, cách kết hợp vòng lặp, câu điều kiện. . . Từ đó giúp bạn cải thiện 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ự phát triển của mình

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