Cho một số x với n số chữ số, nhiệm vụ của chúng ta là kiểm tra xem số đó có phải là số Cộng hoàn hảo của số đó hay không. Để kiểm tra số đó có phải là Cộng số hoàn hảo hay không, ta tìm lũy thừa thứ n của mọi chữ số d (d ^ n) rồi tính tổng tất cả các chữ số, nếu tổng bằng n thì số đó là Cộng số hoàn hảo. Cộng với số Hoàn hảo tương tự như tìm Armstrong của bất kỳ số nào.
Giống như Trong ví dụ cụ thể bên dưới -
Ví dụ
Input: 163 Output: Number is not a perfect_number Explanation: 1^3 + 6^3 + 3^3 is not equal to 163 Input: 371 Output: Number is a perfect_number Explanation: 3^3 + 7^3 +1^3 is equal to 371
Phương pháp được sử dụng bên dưới như sau -
- Bước đầu tiên là đếm số chữ số trong dữ liệu đầu vào đã cho.
- Bước thứ hai là cấp nguồn cho một chữ số cùng số lần với số chữ số của đầu vào.
- Bước thứ ba là cộng tất cả các số và kiểm tra xem nó có bằng nhau hay không.
Thuật toán
Start In function int power(int a, int b) Step 1-> Declare and initialize power as 1 Step 2-> Loop While b>0 Set power = power * a Decrement b by 1 Step 3-> return power End function power In function int count(int n) Step 1-> Declare and Initialize i as 0 Step 2-> Loop While n!=0 Increment i by 1 Set n = n/10 End Loop Step 3-> Return i In function int perfect_number(int n) Step 1-> Declare and initialize x as count(n) Step 2-> Declare and initialize rem as 0 and m as 0 Step 3-> Loop While(n) Set rem as n %10 Set m as m + power(rem, x) Set n as n/ 10 End Loop Step 4-> Return m End Function perfect_number In Function int main(int argc, char const *argv[]) Step 1-> Initialize n as 1634 Step 2-> If n == perfect_number(n) then, Print "Number is a perfect_number " Step 3-> else Print "Number is not a perfect_number " End if End main Stop
Ví dụ
#include <stdio.h> int power(int a, int b) { int power =1; while(b>0) { power *= a; b--; } return power; } int count(int n) { int i=0; while(n!=0) { i++; n = n/10; } return i; } int perfect_number(int n) { int x = count(n); int rem = 0, m=0; while(n) { rem = n %10; m += power(rem, x); n /= 10; } return m; } int main(int argc, char const *argv[]) { int n = 1634; if(n == perfect_number(n)) { printf("Number is a perfect_number\n"); } else printf("Number is not a perfect_number\n"); return 0; }
Đầu ra
Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
Number is a perfect_number